自身のワークブックを閉じるマクロの実行

こんにちは。いつも勉強させて頂いております。

ExcelApplicationScopeでマクロ付きExcelを開いてマクロを実行する簡単なワークフローを作り、
実行してみたのですが、
「Excel アプリケーションスコープの実行中に、ワークブックがサードパーティによって閉じられました。」
という例外が返ってきてしまいます。

マクロの最後にApplication.Quitを記述しているため、文字通りスコープを抜ける前にExcelファイルが閉じられてしまっているのが原因だとは思うのですが、
・マクロ内の閉じる処理のみスキップする
・スコープ内でExcelファイルが閉じられてしまっても無視して処理続行する
など、エラー停止しないようにする手段は何かあるものでしょうか?
(お客様の作成するExcelファイルで、マクロの内容修正依頼する事は難しいのです・・)

1 Like

お行儀悪いですけど、ExcelアプリケーションスコープをTry-Catchで囲って、
例外が発生しても何も処理しない(例外を握り潰して無理やり正常にしてしまう)くらいしかないですかねぇ・・・・?識者の方いかがですか?

#そういえばExcelApplicationScopeには [ContinueOnError]が無いのですね。
#勉強になりました。

3 Likes

あとは、Excelアプリケーションスコープの「自動保存」をオフにするとエラーが出なくなりましたが、、そういうもの?(こっちは因果がよくわかりません)

私もこれに一票!

1 Like

早速のご回答ありがとうございます。
そういえば素直に考えて例外を握りつぶすという手段がありましたね・・。

スコープの自動保存についてはこちらの環境だとオフにしてもエラーは出てしまうようです。
(Studio2019.10.4+excelパッケージ2.4.6884.25683)

マクロが出す他の例外も握りつぶしてしまうので、複雑な処理をしているマクロを実行するときには気を付ける必要がありそうですが、
ひとまず今回はトライキャッチでいってみようと思います。

重ねてありがとうございました!

2 Likes

他の例外も握りつぶしてしまう危険性を少しでも減らすために、握りつぶすエラーを狭めることをおすすめします。

私の環境では、System.Runtime.InterropServices.COMExceptionが発生していました。

ご参考まで

3 Likes

ありがとうございます!今まさにそこを絞り込んでいました・・大変助かりました。
ついでにトライキャッチで囲む範囲もExecuteMacroに限定しておこうと思います。

3 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.