Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
Application.Run
投稿日時: 23/08/23 20:00:00
投稿者: FAB

file1.xlsmでテスト1を実行。
 
Sub テスト1()
 
    Workbooks.Open "C:\file2.xlsm"
     
    Application.Run "'file2.xlsm'!テスト2"
 
End Sub
 
Sub テスト2()
     
    Workbooks("file1.xlsm").Close
     
    MsgBox "○"
 
End Sub
 
Closeすると、その後の処理が止まってしまいます。
 
どなたか、お分かりになりましたら、お願い致します。

回答
投稿日時: 23/08/23 22:17:47
投稿者: WinArrow

引用:

Closeすると、その後の処理が止まってしまいます。

 
当然の事象です。
 
理由は、実行すべきコードが書かれていいるブックが閉じているからです。
 
Cなど、コンパイルといって機械語に翻訳してから実行するのではなく、
VBAは、簡単にいうと、コードのステートメント毎にコンパイルしながら実行しています。
ブックを閉じてしまうと、翻訳するコードがメモリから消えてしまいます。
 

回答
投稿日時: 23/08/24 07:36:05
投稿者: MMYS

コードは自身のブックに存在する。自分自身を閉じれば、実行すべきコードも閉じることになる。実行すべきコードが存在しなくなるので、実行されないのは当たり前。
 

 
Sub Test()
    MsgBox "自身のブックを閉じます。"
    ThisWorkbook.Close
    MsgBox "このメーセージは実行されません。"
End Sub

投稿日時: 23/08/24 07:45:48
投稿者: FAB

理由を知って納得です。
ご回答いただき、ありがとうございました。