• 締切済み

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/17068)
回答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

  • cobol サブルーチンのlink

    cobol言語プログラミングでの質問です。 サブルーチンで 【ダイナミックLINK】と【スターティックLINK】というのがあるようですが、どのような違いがあるのでしょうか?今、私の認識は以下の通りなのですが正しいでしょうか??→例えば、ダイナミックはサブルーチンを修正し、コンパイル完了するとメインをコンパイルしなくてもサブルーチンの修正が反映される。スターテックはサブルーチンを修正し、コンパイル完了してもメインをコンパイル完了するまではサブルーチンの修正が反映されない。どうでしょうか????

  • VBのEXEから他のVBのEXEのファンクションを実行したい

    メインルーチンからサブルーチンを呼ぶような イメージで VBののEXE‥(1)(メインプログラム)から 他のVBののEXE‥(2)のファンクションを呼び出して値を返したいのですが どうすればよいでしょうか? (1)はバッチファイルのような感じで コマンドライン引数が○○のとき(2)の××と△△を実行するという内容のもの (2)はマスタを更新するプログラムがマスタごとに いくつかのファンクションにわかれたものです。 説明不足で伝わりにくいかとおもいますが、 よろしくおねがいいたします。

  • VisualBasicのセットアップ用パッケージについて

    VB6.0のディストリビューションウィザードで作成したパッケージについて教えてください。 VB6.0のディストリビューションウィザードでsetup.exeを作ったのですが、MicrosoftAccessのパッケージのsetup.lstの[RunCommands]のように別プログラムを自動起動させたいと思っています。 VBのSetup.exeでも別プログラムを自動起動させる方法はあるでしょうか? ご回答よろしくお願いいたします。

  • エクセルVBAでサブルーチンへの変数の配列渡し

    エクセルVBAで、メインで使用してる配列変数(の値)をサブルーチンに渡したいが、どうすればよいでしょうか。(なお、メインプログラムは大きいためこれ以上は書けないのでサブルーチンを使用) よろしくお願いいたします。

  • COBOLの学習方法?

    C,VB,PHPなどの言語でプログラミングはしたことがありますが、 COBOL言語でプログラムを書いた経験がありません。 富士通などのホスト?機のコボルの仕事をしたいと思っておりますが 書籍などで一般的なCOBOL?を学習したいので、良書を探しております。 コボラー?と呼ばれる方にお聞きしたいのですが、コボルは何が難しいのでしょうか?つまずき易い点など知りたいです。 また、コボルでオセロは作れますか?

  • 【VisualBasic】ユークリッドの互除法

    VBでユークリッドの互除法のプログラムを作りたいのですが、うまくできません。 テキストボックス1と2(仮にt1、t2と宣言します)に入力された数字を割って余り(mod)を求め、t1t2のどちらの値が大きいか (Math.Max(t1, t2))というところまでは分かるのですが、その後がさっぱりです。 For文で繰り返し処理を行えばいいのですが。 どなたかご助力願います。

  • Fortranでのファイル名操作について

     Fortranを使っているものです。 プログラムで、ファイル名は文字列形式でしか付けれないと思いますが、そのファイル名をメインプログラムから何か値をもらって、それをサブルーチンでファイル名につけるということはできるのでしょうか?  例えば、iをメインプログラムで10~100まで10ずつ動かすとします。そのiの値をわかりやすくするためにファイル名に付けたいと思っていて、do文でサブルーチン中でまわしてファイル名に入れる・・・なんてことは可能でしょうか?

  • COBOLから呼ばれる時

    COBOLプログラムから呼び出され、ファイルのレコードを一行読んでレコードの内容を返すというcサブルーチンを作っているのですが、COBOL←→c間でのインタフェースの扱いかたがよくわからなくて困っています。(ちなみにこのモジュールはcからも呼ばれる事がある) COBOLはコピー句(test001.cbl, test002.cbl)に値を入れて、cサブルーチンにそれを渡しています。 テストはCOBOL85を使用してるので、cサブルーチンの中のデータを見ることができません。なので、返ってくるコピー句の中身を見るのですが、とにかく値が設定されてかえってこないのです。ただ単にロジックのバグと言う可能性もあるけど(^^; 私はインタフェース環境の事がまだ良く解っていないので、今回こちらに質問した次第です。経験者の方がいましたら、どうかおしえてください。 あ、それからCOBOLから渡される値は、c側では全てchar型で受け取らなければいけないような話しを聞いたのですが、本当でしょうか? もう一つ。 コピー句の中で「F-CODE PIC X(2)」のようにハイフンがあるのですが、cではハイフンが使えないからダメなんでしょうか? たくさん質問してしまいましたが、どうかよろしく。 /COBOL側/ -------------------------------------------------- CALL 'TEST1' USING BY VALUE TEST001 TEST002. -------------------------------------------------- /cサブルーチン側/ -------------------------------------------------- int TEST1(test001, test002) char *test001; char *test002; {     ・     ・     ・ return (0); } --------------------------------------------------

  • VisualBasic2008でのエクセルファイル読み込み

    今までMATLABで作っていたものをVB2008でも作ることになり、18000(行)×16(列)のエクセルファイルの数値データを0.01秒おきに1行ずつ読み込んで1×16行列(VBで行列と呼ぶのかはわからないのですが・・・)を作成し別に作っておいた1×16行列と逐一比較をしたいのですが、VB2008でのファイルの読み込み方法がわからず行き詰っております。 できれば「0.01秒おきに」という処理も含めてどなたかご教授願えないでしょうか?

  • COBOLの習得のし易さについて

    COBOLの習得のし易さについて、知りたいです。 プログラミングのレベルは、 ・VB6.0なら、テキストの応用問題の回答が、できる ・javaは、プログラムのトレースができる程度 上記のレベルで、COBOLを1から覚えるとしたら、 ・かなり苦労する? ・そこそこ進むが、あるレベルから難しくなる? どの様な感じでしょうか。 経験者の方、分かる方、教えて下さい。

専門家に質問してみよう