こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2004-07-15 11:05:46

QNo.927112

困ってます

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

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

投稿日時 - 2004-07-15 11:58:33

ANo.3

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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
を実行しても、同名のファイルがあると確認メッセージが出ます。
これらではだめでしょうか。

投稿日時 - 2004-07-15 11:39:50

ANo.1

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

投稿日時 - 2004-07-15 11:15:34

あなたにオススメの質問