dポイントプレゼントキャンペーン実施中!

VB6とVBAのマクロのアクセス方法を教えてください。

用途は、

(1)VB6からVBAマクロを起動する。
(2)VBAマクロの途中経過をVB6のオブジェクトへ通知する。
VBAはPC外部接続機器をコントロールします。
VB6での実装サンプルが用意されていない為、VBAを使用しております。)
(3)VB6は通知結果を、拾って別ルーチンの処理を実行する。

(1)では、下記の様な方法にてマクロ実行を考えていたのですが、
マクロが終了するまで、次コードへ移らない為、
シェル関数の様な形でマクロをキックしたい。
xlApp.run ("VBA_TEST(" & Chr(&H22) & strarg & Chr(&H22) & " )")

(2)では、VBAとVB6と平行に実行したい為、フラグをやり取りするのに、
VB6のオブジェクトを使用したい。

A 回答 (2件)

基本的に VBA でも VB6 でも平行稼動はできません。

そのように作られていません。
一般に「マルチスレッド」と呼ばれる機能ですので、この単語を含めて WEB 検索
してみてください。
プロセスを別にすれば可能性が出てきますが、制御が難しくなるでしょう。

平行稼動でなければ、(1)は提示の Application.Run メソッドで、
(2)は VB 側で Excel オブジェクトが起こすイベントを取得するように
WithEvents で宣言するのが一般的です。
    • good
    • 0
この回答へのお礼

(1)の件は、
DOEVENTを使用して、別アプリケーションのスクリプトを実行させていたことがあったので、
VBAで同様の内容が可能かどうかと問い合わせを行っておりました。

実際の所、平行稼働でなくても、ApplicationRunメソッドで実行するマクロを細かく分割するする事で、
対応が可能になりそうなので、こちらで検討したいと存じます。

(2)の件は、
WithEventsは何度か使用した事がありますが、その様な意図で使用した事がありません。
調べて、対応可能か確認したいと存じます。


ご回答ありがとうございました。

お礼日時:2010/09/07 21:27

的外れならごめんなさい。

聞き流してください。

(1)の場合はVBAのファイル(ExcelやAccess)自体を開いて動作させている為、ファイルが開いている間はマクロに独占されます。
私がよく使う手はマクロにショートカットキーを割り当て、「Sendkeys」でキックさせる方法です。

(2)はわかりません。。。ごめんなさい。
DDE通信とかマクロ中にイベントを起こすとかとかですかね~。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

(2)はおっしゃる通りでありまして、
流用元のソフトは、VBと別アプリケーションを、
DDE通信にてやりとりしていたため、
VBAでも対応できるかと思いました。

お礼日時:2010/09/07 21:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!