• ベストアンサー

複数ブックの最後のブックだけ処理できない

開いている複数ブックに対して「簡単な処理を行い、保存して閉じる」 というマクロを走らせたいのですが、 最後のブックのみ処理できずにマクロが終了してしまいます。 例えば、3ブック開いていたら3ブック目が、 4ブック開いていたら4ブックめが、処理できずに開いたままの状態です。 Dim Wb As Workbook For Each Wb In Workbooks 簡単な処理内容 ActiveWorkbook.Close SaveChanges:=True Next どのように改善すれば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.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

ampm2007
質問者

お礼

出来ました! 有難うございました!

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

もしくは Dim wb As Workbook For Each wb In Workbooks   If wb.Name <> ThisWorkbook.Name Then wb.Close SaveChanges:=True Next ThisWorkbook.Close SaveChanges:=True かな

ampm2007
質問者

お礼

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)
回答No.1

  For Each Wb In Workbooks     '簡単な処理内容     Wb.Close SaveChanges:=True   Next では

ampm2007
質問者

補足

マクロの記述を「PERSONAL.XLSB」に記述して実行しているのですが、 ご教示頂いたWb.Closeで試すと「PERSONAL.XLSB」が閉じてしまいます。

関連するQ&A