• ベストアンサー
  • 困ってます

EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる

EXCELのVBAでマクロを使ってファイルを開こうとしている際、指定したファイルが存在しなかった場合、普通はマクロのエラーが出て「ファイルが存在しません」となりますが、指定したファイルが存在しなかった場合には、メッセージボックスを表示させ、そこで処理を中止させるか、または、その無いファイルの処理は飛ばして次のファイルの処理を行う用にさせることはできるでしょうか? Sub test1() Workbooks.Open Filename:="C:\Documents and Settings\001.xls (001が存在しない場合メッセージボックスを出しマクロを中止するか次の002を開くか選ぶ) Workbooks.Open Filename:="C:\Documents and Settings\002.xls End sub

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数5375
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.4

こんな感じでしょうか? Sub sample() Dim Fname As String Fname = "C:\Documents and Settings\001.xls" If Dir(Fname) <> "" Then 'ファイルの有無をチェック Workbooks.Open Filename:=Fname ElseIf MsgBox("ファイル2を開きますか?", vbYesNo + vbQuestion, "問い合わせ") = vbYes Then Workbooks.Open Filename:="C:\Documents and Settings\002.xls" End If End Sub

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Excelでファイルを開くをマクロで行いたい

    マクロ初心者です "ファイルを開く"をマクロの記録で記録させると ChDir "C:\Documents and Settings\○○\△△\※※" Workbooks.Open Filename:= _ "C:\Documents and Settings\○○\△△\※※¥LotLog20070131.csv" Windows("●●●.xls").Activate End Sub と記録されます この中で 開きたいファイルネ-ム(上記ならばLotLog20070131.csv)を "●●●.xls"の どこかのセルを参照に開きたいのですが どうすれば宜しいのでしょうか?

  • VBA フォルダ内にファイルが存在するか確認したい

    OS: WindowsXP Office: 2003 ExcelVBAについて教えてください。 VBAで特定のフォルダー内でファイルが存在するかの確認をしたいのです。 例えば、以下のようなフォルダーに営業日がファイル名に付いた複数のファイルがあります。  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120201.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120202.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120203.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120206.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120207.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120208.xls 処理は20120201(2012年2月1日)から順番に行うのですが、その際、 報告書20120203.xlsはファイルが存在しているので変数1を返す。 報告書20120204.xlsは休日のためファイルが存在しないので変数0を返す。 次の処理で変数1の場合は処理をし、変数0の場合は処理を飛ばすと言った内容のマクロを考えています。 要はフォルダー内にファイルが存在するかしないかの部分のマクロ記述を知りたいのです。 どなたか、よろしくお願いします。

  • エクセルVBAでブックを開きたいのですが、

    エクセルVBAでブックを開きたいのですが、 アクティブシートを別のブックに移動させたいのですが、 まず、目的のブックを開く → 移動させたいシート名を右クリック → 移動またはコピー を選択 → 移動先ブック を選択  というふうにしようと思っていますが、 Workbooks.Open Filename:= _ "C:\Documents and Settings\YUMIKO\My Documents\YYYY.xls" のようにファイル名を入れると開くことができました。 が、   Workbooks.Open Filename:= _ "C:\Documents and Settings\YUUKORON\My Documents\Range("F1").Value.xls" のように、アクティブシートの セルF1にファイル名を入れて、開きたいのですが、どうしても開くことができません。いろいろ調べて試しましたが、無理でした。 基本的にマクロで記録で作っている初心者です。 回答よろしくお願いします。

その他の回答 (3)

  • 回答No.3
  • mt2008
  • ベストアンサー率52% (885/1701)

On Error GoToを仕掛けてあると、エラー発生時の処理が行えますが、通常はエラーが起こりそうな箇所ではエラーが発生しないかどうかを先に確認します。 If Dir("C:\Documents and Settings\001.xls") = "" Then  rtn = MsgBox("マクロを中止する?Noを選ぶと次の002を開きます", vbYesNo) If rtn = vbYes Then Exit Sub Else  Workbooks.Open Filename:="C:\Documents and Settings\001.xls" End If Workbooks.Open Filename:="C:\Documents and Settings\002.xls

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • mindatg
  • ベストアンサー率48% (110/227)

結論としては、可能です。 ファイルの存在チェックはDir関数を使ってください。 以下サンプル Dim strFilePath As String Dim strFileExist As String strFileExist = Dir(strFilePath) if strFileExist = "" Then  If MsgBox("ファイルが存在しませんYes , No ", vbYesNo) = vbYes Then   '次の002  Else   '中止  End If End If ディレクトリの存在可否は、Dir(パス, vbDirectory) となります。

共感・感謝の気持ちを伝えよう!

  • 回答No.1

この二つ組み合わせればできそうですね http://www.vba-world.com/if_then_else.html http://www.vba-world.com/msgbox_1.html

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • excel vba

    excel VBA (質問1) B7 セルに,DOC20071201_1231.xlsとはいっているとき下記の動作と同様のことをB7を使って表現するにはどうすればいいか。 Sub bookwo_open() Workbooks.Open Filename:="C:\Documents and Settings\taktta\My Documents\Log zzz\2007 log\2007年報告\2007年12月分\" & "DOC20071201_1231.xls" End Sub (質問2) A1セルに7とはいっているとき、B7セルに入っているファイルをオープンするには、どうすればいいか。 (A1セルにnとはいっているとき、Bnセルに入っているファイルをオープンするには、どうすればいいか。)

  • VBA ファイルの開き方

    マクロでファイルを開くときに Workbooks.open FileName:="\c:=\My Documents\Book1.xls" のように記述しますが、この「Book1」にあたる部分を その日の日付(20090422)のようにするにはどうすれば良いのでしょうか? つまり、ファイル名のところに日付を入れたいのです。 よろしくお願いします。

  • VBAで、指定したファイルを読み込めません。

    ファイルを読み込むマクロを作ったのですが、「ファイルが見つかりません」というメッセージが出てしまいます。 Open "C:\Documents and Settings\Owner\デスクトップ\textfile.txt" For Input As #1 どこか、 間違ってがっているのでしょうか。

  • OutlookからExcelをひらく

    いつもお世話になっております。 OutlookのマクロからExcelファイル(ファイル名="sample")を開くために以下のようなマクロを組みましが、 "実行時エラー'424'; オブジェクトが必要です。" というメッセージが出てエラーになってしまいます。 Workbooks.Open FileName:="C:\Documents and Settings\My Documents\sample.xls" ヘルプを見たのですがよくわかりませんでした。 Outlookのマクロを実行してExcelファイルを開くにはどのようにすればよいのでしょうか。 よろしくお願いします。

  • エクセル ファイル名を指定して保存閉じる。

    Sub ブックを開く() Workbooks.Open Filename:="D:\顧客データ\" _ & Range("B1").Value & ".xls" End Sub 上記のマクロでファイルを開き作業をしています。 作業後にファイルを上書保存して閉じるには どのようなマクロになるのでしょうか。 よろしくお願いします。

  • VBAでフォルダにあるエクセルファイルを開く

    こんにちは このコードがうまく動かないのですが、 どこがいけないのかわからなく助けてください。 なおフォルダの中には******データ.xlsと言うファイルがあり、アスタリスク部分は日付が不規則に変化して上書きされるのです。 このファイルを開くマクロを作りたいのですが。 うまく行きません。 よろしくおねがいします。 Sub excelopen() ' ' Dim エクセル As String 'エクセル = Dir(ActiveWorkbook.Path & "\*データ.XLS") If エクセル = "" Then Exit Sub エクセル = ActiveWorkbook.Path & "\" & エクセル Workbooks.Open Filename:=エクセル End Sub

  • Excel VBA: 自動でxlsファイルを開くマクロでメッセージが現れたとき自動でボタンを押す方法

    自動で同ディレクトリ内のxlsファイルを開くマクロを作っています。 開きたいファイルにリンクが張られてあると、「リンクを更新しますか?」という類のメッセージウィンドウが現れるのですが、マクロでこれを自動的に「Yes」「No」と答えるにはどうしたらよいのでしょうか。一応、下のマクロでファイルを開こうとするとこまではできてます。  Sub update() Dim DataFile As Workbook Dim fn As String fn = "Link.xls" Set DataFile = Workbooks.Open(FileName:=ThisWorkbook.Path & "\" & fn) Set DataFile = Nothing End Sub

  • EXcelマクロで同じフォルダ内のファイル全て開く。ドライブまたいでも対応

    以前以下のVBAを教えていただいたham-kamoさんに質問があります。もちろん違う方でも構いません。 「同じフォルダ内のブックを開くマクロ」についてですが、以下のVBAだとカレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが、解決法はありますでしょうか? 例えば\\AAAA\BBというアドレスのフォルダ内にマクロを起動するファイルがあり、C:\Documents and Settings\XXXXがカレントフォルダに設定されるとC:\Documents and Settings\XXXX内のExcelファイルが開かれてしまうということです。 -------------------------- Sub OpenAllBooks() Dim FileName As String Dim OpenedBook As Workbook Dim IsBookOpen As Boolean ChDir (ThisWorkbook.Path) FileName = Dir("*.xls") Do While FileName <> "" IsBookOpen = False For Each OpenedBook In Workbooks If OpenedBook.Name = FileName Then IsBookOpen = True Exit For End If Next If IsBookOpen = False Then Workbooks.Open (FileName) End If FileName = Dir() Loop End Sub

  • エクセルVBAで

    いつもお世話になります。 エクセルファイル”AAA”で Workbooks.Open ("C:\Documents and Settings\Owner\デスクトップ\BBB.xls") として、”BBB”というファイルを開き、”AAA”にデータを読取っているのですが、自分のPC以外でネットワークを介して別のPCで同じ事をすると”BBB”のファイルを開いてくれません。 何か良い方法があれば教えて頂けないでしょうか。

  • エクセルVBA

    こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。