トップ回答者
VBAを外部ソフトウェアまたはExcelからコンパイルする方法を教えてください。

質問
-
OS:Windows7 x64
Office:Excel 2010 x86
拡張子:xlsm
上記の動作環境にて、ソースコードまたは何等かの方法を用いて、
XXXX.xlsmファイルのコンパイル(VBエディタのデバッグ->VBProjectのコンパイル)と同等の
動作をさせる方法がありましたら教えて頂けないでしょうか?
仕様用途としては、例えば100のExcelファイルが存在し、それぞれ自作のライブラリをCOM参照をしている場合に、
対象ライブラリが更新された場合、COMの張り替えをする必要がありますが手作業だと大変です。
COMの張り替え事態は、VBA処理にて、リファレンスを用いて機械的に張り直しが行えますが、
その後コンパイルする方法が分かりませんでした。
Excel実行時に問題がなければ自動的にコンパイルされ(るはず)、実行できますが、
何らかの問題により、参照している関数が使えなくなっていた場合のエラー検知が事前に出来ませんので、
明示的にコンパイルを行いたい次第です。
手作業で一画面ずつ開いてVBエディタでコンパイルはしんどいです。
できれば、VBAの機能使い、コンパイル.xlsmから、XXX.xlsmをコンパイルしていくというのが理想です。
不可能であれば、VisualStudioなどからでも問題ないです。
よろしくお願いします。
- 編集済み mogja 2018年11月13日 11:23
回答
すべての返信
-
ありがとうございます。前者を使用し、Trueを検出した場合は、失敗か正常かを判断するようにしました。
取りあえず保存しておきたい場合のフラグを見て、エラーでも保存、エラーじゃない場合は保存しないに
分岐して、エラー結果は別に出力してエラーがあったら、そこだけ手作業で直せばという感じです。
助かりました。
'VBProjectコンパイル制御 Dim ctrl As CommandBarControl Set ctrl = exApp.VBE.CommandBars.FindControl(ID:=578) ' コンパイル実行 ctrl.Execute ' コンパイルボタン活性状態確認 If ctrl.Enabled Then '活性の場合 compile = False ' コンパイルエラー Else compile = True ' コンパイル正常 End If ' コンパイル成功または失敗しても保存する場合 If compile Or saved Then wkBook.Save End If