変数(String)で取得した関数の実行するには?

解決


hirotaka  2004-09-08 21:20:25  No: 85468

OS:WIN2000 VB6
以前ACCESSを使っていた時に"EVAL()"という関数があり
EVAL("NOW")=2004/09/08などと文字式から計算の実行ができました。
VB6でこれを行いたいと思い調べたら"Microsoft Scripting Control"を組み込めばできることがわかりテストしたらできましたが、肝心の自分で作った関数の実行ができません、ACCESSの場合はできたのですがVB6ではどうしたらよいのでしょうか、やりたいことは変数(STRING)で取得してきた関数の実行です。わかる方いましたらご教授いただけませんかよろしくお願いします。


魔界の仮面弁士  2004-09-09 01:37:21  No: 85469

Scripting Controlでも実現できますが、その場合、AddObject等で
親オブジェクトをScript側に公開してやる必要があります。

# ただ、親オブジェクトがあるのなら、CallByName で代用できるかも。


hirotaka  2004-09-09 02:42:58  No: 85470

魔界の仮面弁士さん早速のレスありがとうございます。 
># ただ、親オブジェクトがあるのなら、CallByName で代用できるかも。
CallByNameを試してみました。 

Dim BckClr As Long
Dim PRJ as String
PRJ="BackColor"
BckClr = CallByName(Me, PRJ, VbGet)
MsgBox(PRJ,VBInformation)
と試しに作ってみると変数(String)に入ったものを実行することができました。
ただ標準モジュールで作成したものはオブジェクトの指定の仕方がわからずエラーになります。"CallByName"ではやはり無理なのでしょうか?、ご存知でしたら教えていただけませんかよろしくお願いします。


魔界の仮面弁士  2004-09-09 03:01:14  No: 85471

オブジェクトになっていないと、CallByNameでは駄目ですね。。。
ScriptControlで行うなら、標準モジュールに書いてあるFunctionプロシージャを
VBScriptの文法にして、AddCodeで渡すという手法もあります。

# "NOW"の実行だけなら、MSDataShapeを使うという手もあるかな。


hirotaka  2004-09-09 16:22:08  No: 85472

魔界の仮面弁士さんいろいろありがとうございました。
いろいろ試してみましたが変数(STRING)に入った関数名を実行するのは難しいな
と判り、これを使わないといけない関数も数多くないので"SELECT CASE"で分岐させて行うことにしました。少しかっこ悪いけどあきらめました、いろいろありがとうございました。また何かありましたらよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加