ワークブックが開かれているかどうか確認して、開いていないなら、開くのをVBAで簡単に書く方法教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/03/22 21:25:41
  • 終了:2009/03/29 21:30:05

回答(1件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692009/03/22 22:47:39

ポイント60pt

簡単とまではいきませんが。

同名のブックが開いているかどうかは、wbに代入することでエラーが出るかどうか、

ブックが存在しないか、何らかの原因で開くことができないかは、実際に開いてみてエラーが出るかどうかで判断しています。


Sub test()
    Dim wb As Workbook
    Const wbName As String = "test.xls"
    
    On Error Resume Next
    Err.Clear
    'ブックが既に開いているか
    Set wb = Workbooks(wbName)
    If Err.Number > 0 Then
        Err.Clear
        'ブックが存在しないか、開くことができないか
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & wbName)
        If Err.Number > 0 Then
            MsgBox wbName & "を開くことができません"
            On Error GoTo 0
            Exit Sub
        End If
        On Error GoTo 0
    Else
        MsgBox wbName & "という名前のブックは既に開いています。"
        On Error GoTo 0
    End If
End Sub

http://q.hatena.ne.jp/

id:kaiketsu

ありがとうございます。おもったより面倒なんですね。

2009/03/24 11:56:10
  • id:SALINGER
    指定したExcelファイルが開いてみて単にエラーが出るかどうかというコードならもう少し簡単ですが、
    開けない場合、Excelファイルが存在しない、破損している、拡張子がxlsなだけの別のファイルなど、
    いろいろな理由が考えられるので、これは「ワークブックが開かれているかどうか確認」しているということには
    ならないので、実際に指定したブック名のファイルが取得できるかを調べる処理を付け加えています。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません