- ベストアンサー
エクセルでこんなマクロ
マクロの初心者ですが、 エクセルで、 「A」、「B」、「C」、「コピーA」、「コピーB」 というファイル名のエクセル開いていたときに、 「コピーA」、「コピーB」というファイルだけを閉じてくれるような マクロを 「C」のファイル上で作成することは可能でしょうか。 ファイル名はABC・・・以降多数あります。 何卒よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
閉じるブックの名前の条件がわかりませんが、「すべて同じ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)
- misatoanna
- ベストアンサー率58% (528/896)
> ファイル名の頭にコピーと付くファイル以外 If Left(Workbooks(Workbooks.Count).Name, 3) = "コピー" Then ↓ If Left(Workbooks(Workbooks.Count).Name, 3) <> "コピー" Then (^.^) 不等号は "<" と ">" を組み合わせた "<>" です。
- misatoanna
- ベストアンサー率58% (528/896)
#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
お礼
お早い回答ありがとうございました。 非常に助かりました。 ちゃんと動きました。 ちなみに、もしよろしかったらで良いのですが、 ファイル名の頭にコピーと付くファイル以外を閉じる ということも出来るのでしょうか。
お礼
ありがとうございました。 大変助かりました。 また何度もすみませんでした。 勉強になりました。 ありがとうございました。