- ベストアンサー
Closeの使用上の注意点を教えて下さい
マクロBからApplication.Run "Book.xls!MacroA"でマクロAに入る場合その中にActiveWorkbook.CloseがあるとCloseの直後にマクロが終了します。(MacroAを単独でrunするとEnd Subまで正常に実行します)解決法を教えて下さい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
『Closeの使用上の注意点』という事なので。 "Book.xls!MacroA"の中に書かれている ActiveWorkbook.Close とは、具体的にどのBookをCloseさせたいと思って書いたものですか? ActiveWorkbookはその時ActiveなBookだったら何でも該当しますから そういった、状況に依存するような書き方はしないほうが良いです。 なので"Book.xls!MacroA"のActiveWorkbook.Closeメソッド周りを修正する事をおすすめします。 例えばWorkbook型の変数を使って Dim wb As Workbook Dim x x = Application.GetOpenFilename() If VarType(x) = vbBoolean Then Exit Sub Set wb = Workbooks.Open(x) 'wbに対する処理 wb.Close Set wb = Nothing ...な感じでCloseしたいbookを捉えておくべきです。 ですが、"Book.xls!MacroA"のActiveWorkbook.Close が本当に「マクロBが書かれたBook」を閉じる事が目的で、 ・マクロBから"Book.xls!MacroA"を呼び出す。 ・"Book.xls!MacroA"内の処理で「マクロBが書かれたBook」を閉じ、閉じた後も何らかの処理を行いたい。 ...という事であればちょっと話も変わってきますが。 その場合は Application.Run "Book.xls!MacroA" の代わりに Application.OnTime Now, "Book.xls!MacroA" とすれば良いです。