- ベストアンサー
「上書き保存確認ダイアログ」を出すには?
エクセル2000をベースにマクロ(VBA)を使って、ある技術計算をさせています。 セルに計算の元になるデータを手入力するのですが、 最終的には、その元になるデータをテキストファイルとして保存させているのですが、保存先に同じファイル名(エクセルの方ではなく、テキストファイル)があっても強制的に上書きされてしまいます。 同じ名前が合った場合は、上書き保存確認のダイアログを表示させたいのですが、どのようにすればよいでしょうか? 保存するのは、入力したデータのテキストのみで、エクセルのファイルは保存しません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
FileSystemObjectを使った例です。 Option Explicit Public Sub TEST() MsgBox checkAllowOverwrite("\a.txt") End Sub Public Function checkAllowOverwrite(ByVal fileName As String) As Boolean Dim oFS Dim r As VbMsgBoxResult Set oFS = CreateObject("Scripting.FileSystemObject") If oFS.FileExists(fileName) Then Dim msg As String msg = fileName & "は存在します。" & Chr(13) msg = msg & "上書きしますか?" & Chr(13) & Chr(13) r = MsgBox(msg, vbYesNo, "上書き確認") If r = vbYes Then checkAllowOverwrite = True Else checkAllowOverwrite = False End If Else checkAllowOverwrite = True End If Set oFS = Nothing End Function
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)あるところに載っていた例です。 If (Dir("c:\3-" & Fname & ".XLS")) = "" Then '同名ファイルのチェック ActiveWorkbook.SaveAs Filename:="C:\3-" & Fname Else MsgBox Fname & " と同名ファイルがあります", vbExclamation End If DIR関数を使います。 ファイル名と拡張子xlsをCSVなどに変えてください。 (2)ファイル保存のダイアログもありますが。 Sub test02() Application.Dialogs(xlDialogSaveAs).Show End Sub でも同名の確認は出ます。 (3) Sub test01() ActiveWorkbook.SaveAs "aaa14.xls" End Sub を実行しても、同名のファイルがあると確認メッセージが出ます。 これらではだめでしょうか。
- anmochi
- ベストアンサー率65% (1332/2045)
どのようにテキストファイルを保存しているのかにもよるのだが、例えば昔なつかしOpenやCloseを使っているのなら、Dir関数でも使って先にファイルがあるかどうか調べて、あったら自前でダイアログを出してやればよいのではないかな。