私はVBScriptをかなり使い慣れているので、経験豊富なユーザーとの理解を確認したいと思います。VBScriptは一見Excelマクロが終了するのを待っていますか?
Excelマクロを実行するための基本スクリプトを作成しました。マクロはMainFlowと呼ばれ、終了を意味するメッセージボックスが表示されます。コードは以下の通りです。
今私は驚いたことに、VBScriptはマクロMainFlowが完全に実行されるのを待ってから、次のステートメントに進みます。この場合は、完了したことを示すメッセージボックスが表示されます。これは私の経験から、VBScriptがすぐに次のステートメントに移行することを期待していたため、本当に驚いています。これがより広いバッチプロセスの一部となるため、私が前に移る前に私の理解を確認したかったのです。 1つのマスタースクリプトから複数のVBScriptを実行することがわかっているので、waitonreturnブール値を使用して、次のスクリプトが開始される前に各スクリプトが終了していることを確認する必要があります。スクリプトそのもの。
誰かが私の理解を確認でき(そして理由を説明することができれば)、本当に感謝します。
dim xlApp, xlBook
Set xlApp = createobject("excel.application")
xlApp.displayalerts = false
Set xlbook = xlapp.workbooks.open("G:\Clients\Client\Reporting\Automated\Futures Expiry Warning\All Futures Expiry.xlsm")
xlapp.run "MainFlow"
msgbox("Finished")
xlbook.save
xlbook.close false
Set xlbook = nothing
xlapp.quit
Set xlApp = nothing
ありがとうございます。理由を説明できますか? waitonreturnせずに、VBScriptは他のvbscriptの実行が完了するのを待たないので、なぜExcel VBAコードのintrinscallyなのかについては、私は少し勘案しています。 – Andy
これは、Microsoftによって実行メカニズムが実装される方法です。 VBScriptとVBAも異なり、異なる方法で実行されます。 VBScriptは、OSのアプリケーション実行メカニズム(WScriptまたはCScriptを介して)を実行する間に、VBAはCOM経由です。 – MikeC