
ExcelVBAによる 上書き保存時の処理について
先日、作業で使用するエクセルにて下記のようにSheet1というシートを保存するVBAを作成しました。
しかし、格納したいパスに同名のファイルが存在した場合、上書き確認メッセージ上で上書き保存をするか否かを確認するのですが
この時、「いいえ」を押下してしまうとそのまま、保存せず処理を終了してしまいます。
私としては、上書き保存を確認する際に「いいえ」を選択するともう一度「ファイルの新規保存」ダイアログを表示し、ファイル名の変更等を行えるようにしたいのですが、どの様にすれば良いのでしょうか?
一応、その時のコードを下記に掲載します。
Sheets("Sheet1").Copy
Sheets("Sheet1").Cells.Select
SaveName = Application.GetSaveAsFilename(filefilter:="Microsoft Office Excelブック,*.xls")
If SaveName <> "False" Then 'キャンセルが押下されたならば、一時保存用のExcelファイルを閉じる
If Dir(SaveName) <> "" Then
If MsgBox("同名ファイルがあります。上書きしますか?", vbYesNo) = vbNo Then
ActiveWorkbook.Close
End If
End If
End If
ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal
End
No.1ベストアンサー
- 回答日時:
必要な部分を Do ~ Loopで囲んでやれば良いです。
Do
LoopFLG=FALSE
SaveName = Application.GetSaveAsFilename(filefilter:="Microsoft Office Excelブック,*.xls")
If SaveName <> "False" Then 'キャンセルが押下されたならば、一時保存用のExcelファイルを閉じる
If Dir(SaveName) <> "" Then
If MsgBox("同名ファイルがあります。上書きしますか?", vbYesNo) = vbNo Then
LoopFLG=TRUE
End If
End If
End If
Loop Until LoopFLG=TRUE
No.4
- 回答日時:
ロジックとしては、上書きしますか?で、「はい」「いいえ」だけで、「ファイル新規保存」が出てきますと、見かけ上の無限ループが、「いいえ」側で発生しますから、「キャンセル」を設けます。
Sub MacroTest1()
Dim SaveName As Variant
Dim Fname As String
Dim ret As VbMsgBoxResult
Const EXT As String = "xls"
Worksheets("Sheet1").Copy
Do
SaveName = Application.GetSaveAsFilename(Fname, "Microsoft Office Excelブック,*.xls")
If VarType(SaveName) = vbBoolean Or SaveName = "" Then
ActiveWorkbook.Close False
Exit Sub
End If
If InStr(1, SaveName, EXT, 1) = 0 Then SaveName = SaveName & "." & EXT
Fname = Dir(SaveName)
If Fname <> "" Then
ret = MsgBox("同名ファイルがあります。上書きしますか?(キャンセルは取りやめ)", vbYesNoCancel)
If ret = vbCancel Then
ActiveWorkbook.Close
Exit Sub
ElseIf ret = vbYes Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal
Application.DisplayAlerts = False
ActiveWorkbook.Close True
Exit Sub
End If
End If
Loop While Fname <> ""
ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal
ActiveWorkbook.Close
End Sub
No.3
- 回答日時:
まぁ,GoTo制御はダメとは言われますが。
Sub macro1()
Dim SaveName As Variant
Worksheets("Sheet1").Copy
roopStart:
savename = Application.GetSaveAsFilename(filefilter:="Microsoft Office Excelブック,*.xls")
If savename = False Then
ActiveWorkbook.Close False
Exit Sub
End If
If Dir(savename) <> "" Then
If MsgBox("同名ファイルがあります。上書きしますか?", vbYesNo) = vbNo Then GoTo roopStart
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=savename, FileFormat:=xlNormal
Application.DisplayAlerts = True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
いきなりPDFでPDFファイルを開...
-
エクセルを上書き保存したのに...
-
エクセル・マクロ(VBA)で、指定...
-
エクセル文書を保存したらメモ...
-
エクセルでCSVファイルとして保...
-
Excel画面の自動更新 Excelファ...
-
エクセルでVBAを使用して1分毎...
-
Excelでの最終更新時刻表示
-
ピボットテーブルの更新ができない
-
GetSaveAsFilenameでフォルダを...
-
メール添付されているファイル...
-
「上書き保存」で一度警告を出...
-
エクセル2016 上書き保存が出来...
-
エクセル 連動して自動で開く
-
Excelの読み取り専用について質...
-
Illustratorファイルに読み取り...
-
エクセルを開いた時に強制的に...
-
エクセルが「名前を付けて保存...
-
EXCELで同一名のファイルがある...
-
拡張子の替え方について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを上書き保存したのに...
-
いきなりPDFでPDFファイルを開...
-
エクセル文書を保存したらメモ...
-
メール添付されているファイル...
-
Excel画面の自動更新 Excelファ...
-
エクセルでCSVファイルとして保...
-
エクセルでVBAを使用して1分毎...
-
EXCELで同一名のファイルがある...
-
ピボットテーブルの更新ができない
-
エクセル 更新していないのに...
-
Illustratorファイルに読み取り...
-
エクセルがwindows終了時に未保...
-
エクセル2007で互換モードで上...
-
マクロ VBA ファイル名を連番...
-
エクセル・マクロ(VBA)で、指定...
-
開いてるファイル(エクセル等)...
-
エクセルが「名前を付けて保存...
-
メールソフト「サンダーバード...
-
Excel2019とOneDriveでのサイン...
-
Excelで上書き保存時の確認をは...
おすすめ情報