• 締切済み

VisualBasicで外サブってできるんですか?

プログラミングについてですが VBのプログラミングの方法として外部サブルーチンは作れるのでしょうか? 例えば、ある値をメインのプログラムから別のプログラムに投げ 処理した結果をメインのプログラムに投げ返すといった処理が出来ないのでしょうか? COBOLでいう外部サブルーチンのような考えです。(以前COBOLをやっていたので・・・) こういったプログラミング方法がVBでもできるのでしょうか?

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.7

しかし、VBでDLLは作れないんだよね。 VBで部品としたら、ActiveX(OCX, DLL, EXE)でしょうか。

  • amania
  • ベストアンサー率22% (2/9)
回答No.6

COBOLでいう外部サブルーチンに近い(感覚的に)ものと考えると、DLLだと思います。 部品として使いたいということですよね? その他、最も簡単なのは、共通モジュールに関数として 作成することだと思います。 共通モジュールを、各プロジェクトに呼び込めば、 特別な制約もなく関数が使用できます。(パブリックで宣言が必要ですけど) 希望されている答えになっていないかもしれませんが、 お役に立つといいのですが。

tokyo_dajp
質問者

お礼

やはりDLLですか! 部品として使いたい理由は、変更が発生したときにそのモジュールだけ修正すれば、呼び元のプログラムは修正しなくてもすみますのでメンテナンスが楽になるのではないかと・・・・。 共通モジュールでは入れ替え作業が面倒なので、やはりDLLについて調べてみます。 ありがとうございました!

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.5

>外部サブルーチン この考えに近いのは すでに挙げられているOLEサーバーだと思います。 次はCOMだと思います。 簡単なやりとりなら、DDE通信でもできます。 http://hp.vector.co.jp/authors/VA015521/sample/sample_83.html

tokyo_dajp
質問者

お礼

ちょっと私にはレベルの高いないようですね・・・・ そのうち理解できる日が来ると思います(苦笑) ありがとうございました!

  • Ulrika
  • ベストアンサー率45% (59/129)
回答No.4

COBOLを知らないので外部サブと同じかどうかは分りませんが、 VBの実行モジュールを「標準 EXE」と「ActiveX EXE」で作れば可能だと思います。 ActiveX EXEのクラスモジュールを外部参照可能な状態で作成し、 そこに宣言されたグローバル関数は標準 EXEから参照可能ですので 値を渡して処理した結果を返す事は可能です。

tokyo_dajp
質問者

お礼

ActiveX EXEについて調べてみたいと思います。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

未熟で生半可なんですが、下記を縦糸・横糸にして、関連書物を読んだり、人に聞かれると良いように思います。 OKWEBをご覧の方でお詳しい方のフォローがあれば良いな と思います。 基本的には、プロセジュアー等名(引数、・・)を書くだけで渡るのですが・・。 もう1つ、Module、Projectと言う、まとめの単位はあるが、プロセジュアからプロセジュアへ渡るのが基本である(Functionプロセジュアーも含む)。 (縦糸) 1.サブプロセジュア内         「Sub-End Sub」の中のGosub-Return 2.Module内 Sub-Endsub(サブプロセジュアー)はいく        らでも含められる。         その中で別サブプロセジュアーへ渡り帰        って来る。  3.Project内 Moduleはいくらでも含められる。         その中で別モジュールへ渡り帰            って来る。  4.ソースファイルとしての保存は、このProject単位ごと  にすることになっている。 5.同一フォルダ内の別プロジェクト(別ファイル) 6.別フォルダ内の別プロジェクト 7.別ドライブ内の別プロジェクト 8.別パソコン内・所属同一サーバー内・別サーバー内 (横糸) 1.FunctionプロセジュアーはSubプロセジュアーと同列   扱い。 2.ランタイムDLL 3.バージョンの問題 4.DLL 5.フォームモジュール・クラスモジュール 6.PrivateとPublic(スコープ)プロセジュアーと変数 7.COM

tokyo_dajp
質問者

お礼

なるほどぉ~ 確かに引数にてデータを引き渡し、処理終了後に結果を引数にて受け取りたい! そういうことをやりたいのです。 5、6、7,7の方法はパスを変えるだけで基本的に同じ使い方ができると思うのですが・・・? まだまだ勉強することが山ほどあるみたいですね! 一つ一つ解決していかねば・・・・・(^_^;) ありがとうございました。

  • gould09
  • ベストアンサー率33% (196/589)
回答No.2

OLEサーバーを使うと似たような事が出来ます。 ただし、サーバーと言う名前が示すように外部の処理部分は、メモリ常駐のサーバープログラムになります。 使い方は、サブループンの使い方と同じで引数付きの関数コールになります。 OLEサーバー側で関数の処理を行います。 OLEサーバーは、CLASSコントロールを使用して作ります。

tokyo_dajp
質問者

お礼

OLEサーバですかぁ・・・・・聞いたことはあるけど っと言った感じです。 恥ずかしながら、殆ど知識がないもので・・・ これについて調べてみたいと思います。 ありがとうございました。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

テキストファイル経由とかにすれば できると思います。 あとは、DLLとか?

tokyo_dajp
質問者

お礼

早速の回答ありがとうございます。 テキストファイル経由ではプログラム実行後メインに戻れないような気がするのですが・・・・(^_^;) まだまだ、勉強不足ですね! DLLについて調べてみようと思います。ありがとうございました。

関連するQ&A