外部ファイルでVB内の計算を定義するには?または外部モジュールを読み込むには?


トム  2005-01-24 00:09:37  No: 87975

VBAでは、外部のマクロファイルを参照設定してモジュールを取り込むことができますが、同じようなことをVBでは可能でしょうか?  
具体的に何をやりたいかというと、VB内でやっている計算の、計算方法の部分のみを、ユーザーが独自にテキストファイル(VBSCript,単純なテキストファイル)で定義できるようにしたいです。どなたかご教授ください。


魔界の仮面弁士  2005-01-24 01:39:18  No: 87976

MSScriptコントロールを使うのが簡単でしょう。
ももたろさんが、そのようなプログラムをVB6のソースつきで公開しておられます。
http://www.momo-lab.net/inu/momomemo.html


トム  2005-01-27 04:53:28  No: 87977

魔界の仮面弁士様ご回答ありがとうございます。

いつも参考にさせていただいており、また質問にもご回答いただき、大変お世話になっております。

その後自分でも調べましたが、モジュールのインポートで自分のやりたいことが手っ取り早く実現できそうです。

魔界の仮面弁士様にご指摘いただいた方法を見てみましたが、私にはちょっと難しそうでした。ちなみに、魔界の仮面弁士様の方法とモジュールのインポートでは、それぞれどのようなメリット・デメリットがありますか?

なお、VBAでは、モジュールのインポートは、
ActiveWorkbook.VBProject.VBComponents.Import (読込モジュールファイル)
でインポートができるようですが、これと同じことをVB6.0で行うにはどのようにコードを書けばいいかご教授いただけますか?

更についでに教えていただきたいのですが、最近世の中の環境が.NETに移行しつつあるようですが、今回のようなモジュールのインポートは、たとえばVB.NETではもっと簡単になりますか?

以上3点ご回答いただけると幸いです。


魔界の仮面弁士  2005-01-27 06:04:07  No: 87978

> それぞれどのようなメリット・デメリットがありますか?
モジュールを取り込む方法だと、exeをコンパイルし直す必要がありますよね。

先に回答した Microsoft Script Control を使う方法の場合、インタプリタとして
VBScriptの構文を解釈して、ソースを動的に実行させる事ができるため、
「計算方法の部分」を、外部(ファイルやDB、レジストリなど)に保存でき、
exeを作り直す必要がなくなります。

あるいは、単純な計算が目的なら、"MSShapeプロバイダ"を経由すれば、
四則演算やVBAの関数(Sin, Abs, Logなど)を使った演算が可能となります。
(この方法の場合は、ADOを通じて計算させる事になります)

それ以外の手法としては、「計算部分」だけを、別途 DLL として作成し、
VBからそれを呼び出す……という手法もあります。ちょっと面倒ですけれどね。

> これと同じことをVB6.0で行うにはどのようにコードを書けばいいか
VBAと同様に、「VBProjectオブジェクト」を使った処理は可能ですが、
それはあくまで、開発環境用の操作となります。コンパイルされたexeに対して
処理を行う事はできませんが、それでも構わないのでしょうか。

もし、構わないというのであれば、VB6で「アドイン」プロジェクトを作成してみてください。
VB6開発環境を操作可能なActiveXコンポーネントを作れるようになります。
アドインの利用に関しては、VB6のヘルプにチュートリアルがありますので、そちらを参考に。

[Visual Basic ドキュメント]
 +[コンポーネント ツール ガイド]
   +[アドインによる Visual Basic 開発環境の拡張]

> 今回のようなモジュールのインポートは、たとえばVB.NETではもっと簡単になりますか?
コンパイルしなければ実行できない、という点では VB.NET でも同じかと。

ですから先の回答と同様、MSScript Controlを使って、インタプリタ的に処理させるようにするか、
もしくは処理部分をDLL化するか……あるいは、動的にコンパイルさせるという選択肢になるかと思います。


魔界の仮面弁士  2005-01-27 06:07:36  No: 87979

> "MSShapeプロバイダ"を
失礼。MSDataShapeプロバイダ、の間違いです。

MSDataShapeを使った演算については、以前、vbvbvb.com の掲示板に
書いた事がありますので、そちらを参考にしてみてください。

http://www.vbvbvb.com/board/Forum5/HTML/000151.html


トム  2005-01-28 10:07:05  No: 87980

魔界の仮面弁士様

丁寧にご回答ありがとうございます。
MSScriptControlを見ましたところ、使い方はわかりましたが、
残念ながら配列を扱うことができません。
配列を扱える、計算式定義のようなことはできないものでしょうか
・・・
最悪は、以下の善処(?)案を考えていますが、ご意見をお聞かせ
ください。
■VBで行う場合は、式定義をDLL化する
■テキストファイルを経由してファイルのやり取りをする
■SQLデータベースを経由してファイルのやり取りをする
などがあると思っています。

よろしくお願いします。


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

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






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