エクセルのVBAに関する質問です。

別ウィンドウで、あるブックが開いているかどうかを確認して、開いていなかったら開くというのはどう書くといいの
でしょうか? 開こうしてしてなかった場合のエラートラップもほしいです。

windosw(ブック名).activate とするとないとマクロがとまって不便です。エラートラップすればいいのでしょうけど、
エクセル不慣れでよくわかりませんのでよろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/11/21 10:09:50
  • 終了:2007/11/21 11:44:57

回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912007/11/21 11:19:09

ポイント60pt

やり方はいろいろとあるかと思いますが、1例です。

Const theFilePath = "D:\Data\test2.xls"

Sub main()
    checkOpen (theFilePath)
End Sub

Sub checkOpen(filePath As String)
'--- ファイルの有無のチェック
    If Dir(filePath) = "" Then
        MsgBox "ファイルがありません。"
        Exit Sub
    End If
    
'--- ファイル名の取り出し
    Dim fileName As String
    If InStr(filePath, "\") > 0 Then
        fileName = Right(filePath, Len(filePath) - InStrRev(filePath, "\"))
    Else
        fileName = filePath
    End If

'--- 開いているファイルにあるか確認
    Dim wb As Workbook
    For Each wb In Workbooks
        If UCase(wb.Name) = UCase(fileName) Then
            MsgBox "すでにファイルは開いています。"
            Exit Sub
        End If
    Next

'--- 開いていなかったのでオープン
    Workbooks.Open filePath
End Sub

http://officetanaka.net/excel/vba/file/file05.htm

id:isogaya

ありがとうございます。

そこそこコード長くなりますね。

2007/11/21 11:44:28

コメントはまだありません

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

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

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

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