![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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を使用して1分毎...
-
マクロ VBA ファイル名を連番...
-
csvファイルを上書き保存でカン...
-
エクセルで保存しますか?のメ...
-
Excel画面の自動更新 Excelファ...
-
開いてるファイル(エクセル等)...
-
メールソフト「サンダーバード...
-
ピボットテーブルの更新ができない
-
「上書き保存」で一度警告を出...
-
エクセルがwindows終了時に未保...
-
エクセルでCSVファイルとして保...
-
csvファイルの保存
-
メール添付されているファイル...
-
EXCELで同一名のファイルがある...
-
セルの塗りつぶしの色を好きな...
-
エクセル2007で互換モードで上...
-
エクセルで作った書類の作成者...
-
エクセル・マクロ(VBA)で、指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを上書き保存したのに...
-
いきなりPDFでPDFファイルを開...
-
メール添付されているファイル...
-
excelとCSVについて質問です! ...
-
エクセル文書を保存したらメモ...
-
マクロ VBA ファイル名を連番...
-
Excel画面の自動更新 Excelファ...
-
エクセルでVBAを使用して1分毎...
-
エクセル・マクロ(VBA)で、指定...
-
エクセルでCSVファイルとして保...
-
Illustratorファイルに読み取り...
-
開いてるファイル(エクセル等)...
-
ピボットテーブルの更新ができない
-
エクセル表のCSV化ができない
-
エクセルがwindows終了時に未保...
-
OneDriveの存在を知った。エク...
-
「変更を保存しますか?」と聞...
-
エクセルで保存の前に固まって...
-
エクセルで保存しますか?のメ...
-
CSVの上書き保存
おすすめ情報