• ベストアンサー

エクセルでこんなマクロ

マクロの初心者ですが、 エクセルで、 「A」、「B」、「C」、「コピーA」、「コピーB」 というファイル名のエクセル開いていたときに、 「コピーA」、「コピーB」というファイルだけを閉じてくれるような マクロを 「C」のファイル上で作成することは可能でしょうか。 ファイル名はABC・・・以降多数あります。 何卒よろしくお願い致します。

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

  • ベストアンサー
回答No.1

閉じるブックの名前の条件がわかりませんが、「すべて同じExcel上で 開いているブックの中で、頭に「コピー」のついたものを閉じる」、と 仮定しまして、ブックCの標準モジュールに、 Sub Test()  Dim i  Application.ScreenUpdating = False  For i = 1 To Windows.Count   Windows(Windows.Count).Activate   If Left(ActiveWorkbook.Name, 3) = "コピー" Then    ActiveWorkbook.Close False '※   End If  Next  Application.ScreenUpdating = True End Sub このままですと、データを書き換えたブックも保存しないで閉じます。 ※の行の "False" を削除すると、書き換え後保存していないブックを 閉じる際に、保存するかどうかを問うメッセージが出ます。

その他の回答 (2)

回答No.3

> ファイル名の頭にコピーと付くファイル以外 If Left(Workbooks(Workbooks.Count).Name, 3) = "コピー" Then     ↓ If Left(Workbooks(Workbooks.Count).Name, 3) <> "コピー" Then (^.^) 不等号は "<" と ">" を組み合わせた "<>" です。

norigon
質問者

お礼

ありがとうございました。 大変助かりました。 また何度もすみませんでした。 勉強になりました。 ありがとうございました。

回答No.2

#1の訂正(?) わざわざウインドウの数で処理しなくてもよいですね。 Sub Test()  Dim i  Application.ScreenUpdating = False  For i = 1 To Workbooks.Count   Workbooks(Workbooks.Count).Activate   If Left(Workbooks(Workbooks.Count).Name, 3) = "コピー" Then    Workbooks(Workbooks.Count).Close False   End If  Next  Application.ScreenUpdating = True End Sub

norigon
質問者

お礼

お早い回答ありがとうございました。 非常に助かりました。 ちゃんと動きました。 ちなみに、もしよろしかったらで良いのですが、 ファイル名の頭にコピーと付くファイル以外を閉じる ということも出来るのでしょうか。

関連するQ&A