質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

3831閲覧

Workbook.BeforeClose イベントについての質問

eragonasable

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/09/12 12:55

ファイル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後は別ファイルの処理は受け付けないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

何のエラーもなく閉じるのでしょうか。
BeforeCloseイベントで出来るか否かという事については出来ます。
Alt+F4でもxボタンでも出来ます。

要件を単純化するとこういう事だと思いますが、ここまで単純化したコードでも動きませんか?
当方では問題なく動きますが。

VBA

1 2**book2.xlsm** 3 4ThisWorkbook内 5Private Sub Workbook_BeforeClose(Cancel As Boolean) 6 Call マクロ2 7End Sub 8 9標準モジュール内 10Public Sub マクロ1() 11 ThisWorkbook.Close 12End Sub 13 14Public Sub マクロ2() 15 Workbooks("book1.xlsx").Sheets("Sheet1").Range("A1") = "test" 16End Sub

投稿2017/09/12 13:43

zorac

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

eragonasable

2017/09/13 00:31

こちらも同じものを作った場合は問題なく動くようです。 マクロ2に書いてある反映処理に問題があるかもしれません。 もう少し調べてみます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問