• ベストアンサー

EXCEL VBAで名前をつけて保存

EXCEL2003でVBAを作成しています。 INPUTBOXに入力した名前でファイルを保存するVBAを 作成したのですが、 同じファイル名が既に存在していたときに、 エラーのメッセージを出すようなVBAはありますか?

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

  • ベストアンサー
  • kozo_k
  • ベストアンサー率29% (55/188)
回答No.2

下のようなVBAでファイルの有り無しを判断したらどうですか? Sub arinasi()   Dim buf As String   buf = Dir("c:\My Documents\test.txt")   If buf = "" Then    MsgBox "ファイルはありません"   Else    MsgBox buf & "はすでにあります"   End If End Sub ("c:\My Documents\test.txt")の部分はインプットボックスで取得したファイル名になります。

ruru_gold
質問者

お礼

ご回答ありがとうございます。 これで試してみようと思います。

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

普通に SaveAs で聞いてきませんか? こちらで試したのはExcel97だけど、、、 Sub Test() Dim fName  fName = Application.GetSaveAsFilename( _      fileFilter:="ExcelFile (*.xls), *.xls")  If fName <> False Then    On Error Resume Next    ActiveWorkbook.SaveAs fName  End If End Sub

ruru_gold
質問者

お礼

ご回答ありがとうございます。 これで試してみようと思います。

  • palmmy
  • ベストアンサー率38% (841/2170)
回答No.1

>エラーのメッセージを出すようなVBAはありますか? 保存するまえに、ファイルの有無をチェックすればよいかと思います。 FileLen("ファイル名") でファイルサイズを調べて、ERRORだったらファイルが無いと判定すればよいかと思います。 ファイルがあれば、エラーメッセージ ファイルが無ければ、保存する。

ruru_gold
質問者

お礼

ご回答ありがとうございます。 具体的なモジュールの書き方が知りたかったので・・・。

関連するQ&A

  • Excel 名前を付けて保存のVBA

    名前を付けて保存画面を表示して、自分でファイル名を入力して保存をしたいのですが、 以下で名前を付けて保存画面は表示されますが、 実際に保存をクリックしてもファイルが作成されませんでした。 保存されるVBAを教えてください。 Sub test() Save_Filename = "c:\" Save_File = Application.GetSaveAsFilename(Save_Filename, _ FileFilter:="Excelファイル,*.xls") End Sub

  • EXCEL VBAで作成した ファイルを 複製できますか?

     EXCEL VBAで 名簿を作成しました。  名簿はMOに 保存しました。 保存したファイルを デスクトップに コピーしました。 しかし、ファイルを開いても、マクロがうまく働きませんでした。 「同じファイル名のファイルがある・・・」のようなメッセージが出てしまいます。  1台のコンピューターだけでなく、複数で使えるようにするには、VBAで作 成したファイルはどのように保存すればよいのでしょうか。教えてください。

  • エクセル、VBAを使ってのファイル保存。

    エクセルでファイル(既存)を開いたら まず「名前を付けて保存」をして 新しく作ったファイルで作業を進めたいのですが 毎回保存のファイル名が変わるので 固定の名前での記述(VBA)が出来ません。 そこで、保存手前の段階である ダイアログボックスを表示させた状態で終わらせる というマクロは出来るのでしょうか? (保存先を決めたりファイル名を入力する状態) 色々試してみたのですが、どうにもうまく行かず… 皆さんの知恵をお借りしたいです。 宜しくお願いします。

  • エクセル保存出来ない様にするには。

    エクセル保存出来ない様にするには。 お世話になります。 自宅でExcel2002VBA、職場でExcel2003VBAを使用しています。 職場で原紙ファイルに書き込み保存してしまう人がいる為、その対策として ボタンを設けて読取専用モードで、原紙ファイルを開く手順にしています。 Workbooks.Open Filename:=totoFullName, ReadOnly:=True 確かに上書き保存は出来ませんが、名前を変えて保存しますかメッセージが表示され保存可能な状態になってしまいます。 名前を変えて保存を含め、全ての保存が出来ない用にする方法がありましたら 教えて頂きたくよろしくお願いします。

  • エクセルVBAを保存時に消したい

    はじめて質問させて頂きます。 エクセルのVBAを覚え始めたばかりの物ですが、 見積書式を作成し、見積番号をVBAでファイルOPEN時に自動挿入し 名前を付けて保存する時はその見積番号が保存する時にファイル名に なるようにVBAを作成しました。 見積番号の呼び出し方法は 指定フォルダにある(.xls)ファイルの数+1としています。 ここで質問なのですが現状だと保存したファイルにはVBAが存在するので そのファイルの修正をする時マクロの実行の有無を聞いてきます。 実行しないを選べば見積番号は変わらないのですが 間違えて実行してしまうとそのファイルの見積番号が変わってしまいます。。 回避方法として知り合いからアドインファイルにすれば?と言われて 保存形式をxlaにしたのですがエラーが出てしまいました>< Const FPath = "C:\指示書" Sub Auto_Open() 'xlsファイル検索 With Application.FileSearch .NewSearch .Filename = "*.xls" .FileType = msoFileTypeAllFiles .LookIn = FPath .SearchSubFolders = False .Execute Cells(1, 21).Value = .FoundFiles.Count + 1 Cells(1, 21).NumberFormat = "0000" End With End Sub したから4行目のCells(1, 21).Value = .FoundFiles.Count + 1 でエラーが出てしまうようで。。原因がわかりません。 何が原因なのでしょうか?><

  • ファイルを「名前を付けて保存」できない、何故?

    Wordでホームページを作成中、トップページが作れたので、ファイル名にindex.htmlと入力し保存すると、「ファイルを保存できません。“index.html”は有効な8.3システムファイル名ではありません。有効なファイル名を入力して、ファイルを保存し直してください。」とメッセージが出て保存が出来ない。何故ですか?一体8.3システムとは?検索で“8.3システム”を調べましたが、私には理解できません。判りやすく教えて下さい。どのようにしたら、名前を付けて保存が出来ますか?ファイル名(index.html)は余り変えたく有りません。

  • エクセル 未入力セルがあると保存できない設定

    エクセルVBAで、入力必須項目を設定し、未入力セルがある場合は保存ができないようにしたいのですが教えていただけませんか。 ブックには複数シートが存在し、入力必須項目を設定したいのはsheet1のみ。 sheet1のA1,A5, A9, B1, B5, B9の6つのセルはすべて必須入力。 未入力がある場合はファイルを閉じる時に保存が出来ないようにする。 出来ればどのセルが未入力なのかエラーメッセージが出るとベスト。 6項目すべて入力できていれば通常通りファイル保存して閉じることができる。 このブック作成者がブック作成、変更ができるようにしたい(ファイルを作成、変更する時はブランクなのでエラーメッセージが出てファイル保存ができないため)。

  • ExcelのVBAで上書き保存を確認したい

    VBAでGetSaveAsFilename メソッドを使うと、[名前を付けて保存]ダイアログボックスがでます。 ここでファイル名を指定するのですが、このとき同フォルダ内に同ファイル名があった場合でも、何のメッセージボックスもださずに上書きされてしまいます。 同フォルダ内に同ファイル名があった場合のみ、「上書き保存しますか?」というメッセージボックスをだしたいのですが、どのようにしたらよいでしょうか。 教えてください。 よろしくお願いします。

  • エクセルにて、VBAで名前を付けて保存する場合

    こんにちは、色々試しているのですが、うまくいかずに悩んでいます。 コマンドを実行すると、名前を付けて保存のダイアログ画面を表示させるVBAを作りたいです。 ただし、 (1)保存せずに、ダイアログを表示させる状態で停止させる。 (2)ダイアログ表示時、ファイル名欄に”売上集計表yyyy年mm月”というファイル名が入っている。(yyyyとmmは変数。コマンド実行時に入力する事でファイル名もそれに対応する。) 以下の様にVBAを組んだのですが(他にも色々組んでいますが、うまく動いている個所は省いてます。)、上記(1)(2)共に思い通りに動いてくれません。分かるかたがいましたら、よろしくお願いします。 Sub 保存() ' ' Macro1 Macro Dim rtn Dim myD As String, msg As String, fn As String, x As String Dim wb As Workbook, ws As Worksheet line: ' 年月の入力処理 rtn = Application.InputBox("入力する月を西暦YYYYMM形式で入力してください。" _ & vbNewLine & "例)2011年7月⇒201107", Type:=1) If rtn = False Then Exit Sub myD = Left(rtn, 4) & "/" & Right(rtn, 2) & "/01" If Not IsDate(myD) Then MsgBox "存在しない年月です!", vbCritical GoTo line Else If MsgBox(Format(myD, "yyyy年mm月") & "で間違いないですか?", vbYesNo + vbQuestion) = vbNo Then Exit Sub End If End If 'ファイルの保存 ChDir "C:\Users\(ユーザー名)\Desktop\新しいフォルダー" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\(ユーザー名)\Desktop\新しいフォルダー\売上集計表保存" & "Year(myD)" & "年" & "Month(myD)" & "月" & ".xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub

  • csvをVBAを使ってエクセル形式で保存したい

    タイトルのとおりなのですが、csvをVBAを使ってエクセル形式で保存したいのですが、その際ひとつ条件がありまして作成するエクセルファイルをcsvと同じ名前にしたいと思っています。  csvのファイル名は都度変わってしまうため私の現在の知識ではVBAを作成することができません。  教えて下さい。よろしくお願いします。

専門家に質問してみよう