• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.2

#1の者です。 > (1)から引数を(2)のサブメインにわたしてそこからその引数を利用してファンクションを呼んでやるということも不可能でしょうか? (2)のスタートアップをSub Mainにし、引数を渡すという意味ですか? EXE同士の引数等の引き渡し手段はコマンドライン引数しかありませんので、(2)をShell関数等でキックする際、コマンドライン引数に設定することで同様のことを実現するのは可能ではあります。 しかし、この方法は(1)が(2)のファンクションを直接呼ぶ方法ではなく、オーバーヘッドが大きく、冗長となってしまいますので、お勧めできません。 また、(1)がバッチ処理を行うものであるとすると、(2)は何度も呼ばれることになってしまいますよね? そうすると、負荷がかかりすぎてシステムダウンすることは目に見えてます(エクスプローラー上で何度もExeをクリックした場合を想像してみて下さい)。 また、どうしても「EXE」という形にこだわるとすれば、#1の1つ目の代替案と同様の方法でActiveXEXEとしてコンパイルする方法もあります。 > (1)と(2)は別プロジェクトではダメということでしょうか いえ、#1の3つの代替案はともに別々のプロジェクトであることを前提としてます。 > とりあえず設計したSEの仕様では両方標準EXEということでなっているのでなるべく仕様どおりにつくりたいのですが‥ 少し厳しいことを申し上げますがご容赦下さい。 SEといえども人間である限り常に正しい設計をするとは限りません。 また、その間違った仕様を忠実に実現することがプログラマの使命では決してありません。 間違っていると思われることは、その根拠を明確にし(SEを責めるという意味ではありません)、適切な代替案を提示し、プロジェクトのメンバーとしてそのシステムを成功に導く努力をすることが大切だと思います。 そして、こういったノウハウを次の案件に活用し、よりよいシステムを構築することが大切です。 是非がんばって下さいね。

nekosuzu
質問者

お礼

ご回答ありがとうございました。 汎用的に使えるようにということで 別のexeでということだったみたいなのですが SEと相談の上同一のプロジェクトにモジュールを追加 して一つのexeにすることにしました。 まぁモジュールが分割されているし ドキュメントで(1)と(2)はそれぞれ単独でも使えるということを記述しておけばいいかなと‥いうことで‥。 まぁひとつでできるならひとつのほうがいい気もしますしね。 SEの方はShell関数をつかって引数をわたす方法を 描いていたようです。 それもひとつの方法かもしれませんけどね。 この4月からVBの業務につき(それまでホスト系コボラー) 何ができるかもよくわからない状態です。 そのうちもうすこし経験をつめば SEにどんどん提案できるようになるのかもしれません 今回のこともいい経験になりました。 本当にありがとうございました。

その他の回答 (1)

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.1

基本的にはできません。 代替案として、以下の3つを提案します。 ■(2)のファンクションをクラスモジュール(*.cls)に記述し、ActiveXDLLとしてコンパイルし、(1)と(2)で共有する。 ■(2)のファンクションをクラスモジュール(*.cls)に記述し、(1)のプロジェクトにも追加し、(1)と(2)でソースを共有する。 ■(2)のファンクションを標準モジュール(*.bas)に記述し、(1)のプロジェクトにも追加し、(1)と(2)でソースを共有する。

nekosuzu
質問者

補足

早速のご回答ありがとうございます。 (1)から引数を(2)のサブメインにわたしてそこからその引数を利用してファンクションを呼んでやる ということも不可能でしょうか? (1)と(2)は別プロジェクトではダメということ でしょうか おばかな質問してたらすいません その辺ど素人なもので(T-T) とりあえず設計したSEの仕様では 両方標準EXEということでなっているので なるべく仕様どおりにつくりたいのですが‥

関連するQ&A