• ベストアンサー

ブックが開いているかどうか調べたい

こんばんは。 エクセル2003vbaの質問です。 Book2.xlsから If ”Book1.xlsが開いている” Then MsgBox "Book1.xlsは開いています" End If と言う動作を行ないたいのですが どういうコードを書けばいいのでしょうか? できれば Book1.xls、Book2.xls以外のファイルも開いていても動作するようにしたいです。 ご教授よろしくお願い致します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 開いているかどうかは、一行で判定できます。'* '------------------------------------------- Sub MarcoTest1() Dim fn As String fn = "TestBook1.xls" 'ファイル名 If Not IsError(Evaluate("[" & fn & "]Sheet1!$A$1")) Then '*   MsgBox "開いています。", vbInformation  Else   MsgBox "開いていません。", vbExclamation  End If End Sub

quygquygqu
質問者

お礼

おお! ありがとうございます。

その他の回答 (4)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

開いているブックを順に見ていって、探しているものかどうかを調べ、見つからなければ開いていない、見つかれば開いていると判断するのではどうでしょうか? CheckWB("Book1.xls")で呼び出すと、Book1が開いていればTrue、なければFalseを返す関数の例です。 >If ”Book1.xlsが開いている” Then >MsgBox "Book1.xlsは開いています" >End If を記述したい時にはこの関数を利用して、  If CheckWB("Book1.xls") Then MsgBox "Book1.xlsは開いています" のようにして使うことができます。 Function CheckWB(nam As String) As Boolean Dim wb As Workbook CheckWB = False  For Each wb In Workbooks   If wb.Name = nam Then CheckWB = True: Exit For  Next wb End Function

  • yucco_chan
  • ベストアンサー率48% (828/1705)
回答No.3

セル A1 が空白なら Book1.xls が開いているか調べる。 A1 にファイル名(.xlsは付けない)が書かれていれば、そのファイルが 開いているか調べる。 大文字小文字が違っていても開いていないとなりますので、注意 Sub Sample() Dim wbk As Workbook, flg As Boolean Dim namae As String If Range("A1") = "" Then namae = "Book1" Else namae = Range("A1") End If For Each wbk In Workbooks If wbk.Name = namae & ".xls" Then flg = True Next wbk If flg = True Then MsgBox namae & " を開いています。", vbInformation Else MsgBox namae & " は開いていません", vbInformation End If End Sub

quygquygqu
質問者

お礼

ありがとうございます。

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.2

こんにちは。 こんなのとか・・・。 Sub Sample() Dim wb As Workbook On Error Resume Next Set wb = Workbooks("Book1.xls") On Error GoTo 0 If Not wb Is Nothing Then MsgBox "Book1.xlsは開いています" End Sub

quygquygqu
質問者

お礼

ありがとうございます。

  • f272
  • ベストアンサー率46% (8623/18441)
回答No.1

こんな感じ? On Error Resume Next Err.Clear Workbooks.Open Filename:="C:\Book1.xls", Notify:=False If Err.Number > 0 Then MsgBox "Book1.xlsは開いています" Endif

quygquygqu
質問者

お礼

あら? Book1を開いてないのに、開いてます。になってしまいました。 もう一度やってみます。

関連するQ&A