アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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
    • good
    • 4

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
    • good
    • 1

結論としては、可能です。


ファイルの存在チェックは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) となります。
    • good
    • 0

この二つ組み合わせればできそうですね


http://www.vba-world.com/if_then_else.html
http://www.vba-world.com/msgbox_1.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A