ActiveWorkbook.SaveAs FileName:=MyPath, FileFormat:=xlCSV, CreateBackup:=False
というコードで、BookをCSVファイルとして保存しています。
保存時に同名のファイルがあった場合、「置き換えますか?」のメッセージが表示されます。
ここで「いいえ」を選択するとエラーが出て止まってしまいます。
止まるのを回避するために、
On Error Resume Next
On Error GoTo 0
でSaveAsの文を挟みました。
現在、上記コードの続きに、、
MsgBox "保存しました"
と書いているため、保存しなかった場合にも「保存しました」と表示してしまいます。
これを避け、
「置き換えますか?」に対して「はい」を選択した場合にのみ「保存しました」とメッセージを表示したいです。
(「いいえ」「キャンセル」を選択した場合は「保存しませんでした」と表示したいです)
可能でしょうか。
予めDir関数でファイルを検索して、自分で「上書きorキャンセル」のメッセージを作成するしかないのでしょうか。
慣れていないのでできればDir関数は使いたくないのですが…。
No.1ベストアンサー
- 回答日時:
エラーが発生すると、Errorというシステム変数にエラーの内容が残ります
(エラーが無い時は nul="")
ただし、エラーの直後しか残っていませんので
SaveAs の直後に er=Error とでもしておいて、
MsgBox "保存しました" の前に
if er="" then
MsgBox "保存しました"
else
MsgBox "保存しません"
endif
等としてはどうでしょうか
回答ありがとうございます、返信が遅れて申し訳ありません。
巧くいきました!
エラー時に「Error」にどんなものが入るのかわからなかったので「er」の変数型に迷いましたが、
なんとかなりました。
ありがとうございます。
No.3
- 回答日時:
#2 です。
単に、以下のようにしても良いと思いますね。
ただし、同名ファイルがあった時に、「いいえ」の次に、「キャンセル」をクリックする必要があります。
Sub TestSaveAs2()
Dim MyPath As String
Dim Ret As Variant
MyPath = ActiveWorkbook.Name
If Dir(MyPath) <> "" Then
With Application.Dialogs(xlDialogSaveAs)
Ret = .Show(MyPath)
End With
If Ret = False Then
MsgBox "保存はしませんでした。", vbInformation
Else
MsgBox "保存しました。"
End If
Else
ActiveWorkbook.SaveAs Filename:=MyPath, _
FileFormat:=xlCSV, _
CreateBackup:=False
MsgBox "保存しました。"
End If
End Sub
わざわざ別の案も、ありがとうございます。
でも見た目、#2のコードの方がとっつきやすいそうに感じました(あくまで見た目ですが)。
No.2
- 回答日時:
こんにちは。
>予めDir関数でファイルを検索して、自分で「上書きorキャンセル」のメッセージを作成するしかないのでしょうか。
>慣れていないのでできればDir関数は使いたくないのですが…。
それは、エラーではありませんから、エラートラップしてもしょうがないと思いますね。
慣れていなければ、慣れるまでしょうがないと思います。
最初は、誰も同じです。
---------------------------------------------
Sub TestSaveAs()
Dim MyPath As String
Dim intRet As Integer
Dim Ret As Variant
MyPath = ActiveWorkbook.Name 'ファイル名
If Dir(MyPath) <> "" Then
intRet = MsgBox("置き換えますか?", vbYesNoCancel)
If intRet = vbYes Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=MyPath, _
FileFormat:=xlCSV, _
CreateBackup:=False
MsgBox "保存しました。"
Application.DisplayAlerts = True
ElseIf intRet = vbNo Then
With Application.Dialogs(xlDialogSaveAs)
Ret = .Show(MyPath)
End With
If Ret = False Then
MsgBox "保存はしませんでした。", vbInformation
Else
MsgBox "保存しました。"
End If
Else
MsgBox "保存はしませんでした。", vbInformation
End If
Else
ActiveWorkbook.SaveAs Filename:=MyPath, _
FileFormat:=xlCSV, _
CreateBackup:=False
MsgBox "保存しました。"
End If
End Sub
回答ありがとうございます、返信が遅れて申し訳ありません。
>>予めDir関数でファイルを検索して、自分で「上書きorキャンセル」のメッセージを作成するしかないのでしょうか。
>それは、エラーではありませんから、エラートラップしてもしょうがないと思いますね。
はい、エラートラップを使わずに、という意味でした。
vbYesNoCancelという部分で、メッセージボックスに選択肢を持たせるみたいですね!
今回の件に関しては#1の方のコードを使わせてもらいましたが、
コレ(vbYesNoCancel)は非常に使えそうです。
コード解析させてもらって、是非使って生きたいと思います。
とりあえず「intRet = MsgBox("置き換えますか?", vbYesNoCancel)」だけ突っ込んでみたところ、
あっさり3つの選択肢が出て感動です。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gif形式の動く画像の保存方法
-
iPadのWordで作成したものを画...
-
microsoft print to pdf 保存先
-
保存フォルダが指定できません...
-
googleフォトからPCへ保存
-
保存していないメモ帳のありか
-
Snipping Toolの保存名自動変更...
-
ダウンロードした音楽・映像の...
-
右クリックで保存できない
-
ノーインターネットセキュリティ
-
画面の保存の仕方
-
CANON DPPの保存先
-
WEBページの保存が出来ません。
-
Safari の Webページを簡単にPD...
-
PrintScreenを押したときの画像...
-
Facebook Messengerで、相手が...
-
ホームページ上の動画を保存したい
-
デフラグが遅い
-
あなたの環境からの投稿はでき...
-
無修正を見るだけで違法なので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
microsoft print to pdf 保存先
-
iPadのWordで作成したものを画...
-
gif形式の動く画像の保存方法
-
googleフォトからPCへ保存
-
「名前を付けて画像を保存」先...
-
右クリックで保存できない
-
保存していないメモ帳のありか
-
キャンセル処理の方法が分かり...
-
デフラグが遅い
-
ネットの画面をPDFで保存したい
-
Facebook Messengerで、相手が...
-
壁紙フォルダが表示されない
-
Snipping Toolの保存名自動変更...
-
「名前を付けて保存」のファイ...
-
ログイン名・パスワードを保存...
-
デスクトップにおいているメモ...
-
COOKIEが自動的に削除さ...
-
ダイレクトにデスクトップに落...
-
シスコのスイッチやルータのcon...
-
GOMプレイヤーで画面のキャプチ...
おすすめ情報