• ベストアンサー

「上書き保存確認ダイアログ」を出すには?

エクセル2000をベースにマクロ(VBA)を使って、ある技術計算をさせています。 セルに計算の元になるデータを手入力するのですが、 最終的には、その元になるデータをテキストファイルとして保存させているのですが、保存先に同じファイル名(エクセルの方ではなく、テキストファイル)があっても強制的に上書きされてしまいます。 同じ名前が合った場合は、上書き保存確認のダイアログを表示させたいのですが、どのようにすればよいでしょうか? 保存するのは、入力したデータのテキストのみで、エクセルのファイルは保存しません。

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.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)
回答No.2

(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)
回答No.1

どのようにテキストファイルを保存しているのかにもよるのだが、例えば昔なつかしOpenやCloseを使っているのなら、Dir関数でも使って先にファイルがあるかどうか調べて、あったら自前でダイアログを出してやればよいのではないかな。