質問: ファイルAからファイルBを開き、ファイルBを閉じるときに、ファイルAに値を反映させて、ファイルBを閉じる処理を行いたいと思っており、 反映させる処理は完成したのですが、閉じる処理を含めた一連の処理になるとうまく動きません。 結論からいうと、反映処理を通っているのに、ファイルAには反映されていない状態になります。 閉じる処理は作成したボタン以外にも、×やAlt+F4もイメージしています。 ファイルB マクロ1 : thisworkbook.close のみ マクロ2 : 反映処理を記述 thisworkbookオブジェクト:マクロ2の呼び出し ボタンはマクロ1と関連付けらています。 イメージとしては、 1.ボタン もしくは ×ボタンで閉じる 2.マクロ2が呼び出される。 3.マクロ2の処理でファイルAにファイルBの内容が反映。 4.ファイルBが閉じられる。 といった流れをイメージしていました。 実際これを動かすと、マクロ2でも処理自体は流れていましたが、ファイルAに反映はされないまま、ファイルBが閉じてしまいました。 マクロ2だけを流すと確かに、ファイルAに反映されています。 thisworkbook.close後は別ファイルの処理は受け付けないのでしょうか?
回答: 何のエラーもなく閉じるのでしょうか。 BeforeCloseイベントで出来るか否かという事については出来ます。 Alt+F4でもxボタンでも出来ます。 要件を単純化するとこういう事だと思いますが、ここまで単純化したコードでも動きませんか? 当方では問題なく動きますが。 ``` **book2.xlsm** ThisWorkbook内 Private Sub Workbook_BeforeClose(Cancel As Boolean) Call マクロ2 End Sub 標準モジュール内 Public Sub マクロ1() ThisWorkbook.Close End Sub Public Sub マクロ2() Workbooks("book1.xlsx").Sheets("Sheet1").Range("A1") = "test" End Sub ```