OS:WIN2000 VB6
以前ACCESSを使っていた時に"EVAL()"という関数があり
EVAL("NOW")=2004/09/08などと文字式から計算の実行ができました。
VB6でこれを行いたいと思い調べたら"Microsoft Scripting Control"を組み込めばできることがわかりテストしたらできましたが、肝心の自分で作った関数の実行ができません、ACCESSの場合はできたのですがVB6ではどうしたらよいのでしょうか、やりたいことは変数(STRING)で取得してきた関数の実行です。わかる方いましたらご教授いただけませんかよろしくお願いします。
Scripting Controlでも実現できますが、その場合、AddObject等で
親オブジェクトをScript側に公開してやる必要があります。
# ただ、親オブジェクトがあるのなら、CallByName で代用できるかも。
魔界の仮面弁士さん早速のレスありがとうございます。
># ただ、親オブジェクトがあるのなら、CallByName で代用できるかも。
CallByNameを試してみました。
Dim BckClr As Long
Dim PRJ as String
PRJ="BackColor"
BckClr = CallByName(Me, PRJ, VbGet)
MsgBox(PRJ,VBInformation)
と試しに作ってみると変数(String)に入ったものを実行することができました。
ただ標準モジュールで作成したものはオブジェクトの指定の仕方がわからずエラーになります。"CallByName"ではやはり無理なのでしょうか?、ご存知でしたら教えていただけませんかよろしくお願いします。
オブジェクトになっていないと、CallByNameでは駄目ですね。。。
ScriptControlで行うなら、標準モジュールに書いてあるFunctionプロシージャを
VBScriptの文法にして、AddCodeで渡すという手法もあります。
# "NOW"の実行だけなら、MSDataShapeを使うという手もあるかな。
魔界の仮面弁士さんいろいろありがとうございました。
いろいろ試してみましたが変数(STRING)に入った関数名を実行するのは難しいな
と判り、これを使わないといけない関数も数多くないので"SELECT CASE"で分岐させて行うことにしました。少しかっこ悪いけどあきらめました、いろいろありがとうございました。また何かありましたらよろしくお願いします。
ツイート | ![]() |