- ベストアンサー
複数ブックの最後のブックだけ処理できない
開いている複数ブックに対して「簡単な処理を行い、保存して閉じる」 というマクロを走らせたいのですが、 最後のブックのみ処理できずにマクロが終了してしまいます。 例えば、3ブック開いていたら3ブック目が、 4ブック開いていたら4ブックめが、処理できずに開いたままの状態です。 Dim Wb As Workbook For Each Wb In Workbooks 簡単な処理内容 ActiveWorkbook.Close SaveChanges:=True Next どのように改善すれば良いのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Dim Wb As Workbook For Each Wb In Workbooks If Wb.Name <> ThisWorkbook.Name Then Wb.Activate '簡単な処理 '・・・・・・ Wb.Close SaveChanges:=True End If Next 'Excel自体を終了 Application.Quit
その他の回答 (2)
- watabe007
- ベストアンサー率62% (476/760)
もしくは Dim wb As Workbook For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then wb.Close SaveChanges:=True Next ThisWorkbook.Close SaveChanges:=True かな
お礼
Wbで取得したブックをアクティブにしてやることで、 思い通りの動作になりました。 Dim Wb As Workbook For Each Wb In Workbooks target = Wb.Name Workbooks(target).Activate If Wb.Name <> ThisWorkbook.Name Then 簡単な処理内容 ActiveWorkbook.Close SaveChanges:=True End If Next ヒントを頂けて助かりました。
- watabe007
- ベストアンサー率62% (476/760)
For Each Wb In Workbooks '簡単な処理内容 Wb.Close SaveChanges:=True Next では
補足
マクロの記述を「PERSONAL.XLSB」に記述して実行しているのですが、 ご教示頂いたWb.Closeで試すと「PERSONAL.XLSB」が閉じてしまいます。
お礼
出来ました! 有難うございました!