- ベストアンサー
ブックが開いているかどうか調べたい
こんばんは。 エクセル2003vbaの質問です。 Book2.xlsから If ”Book1.xlsが開いている” Then MsgBox "Book1.xlsは開いています" End If と言う動作を行ないたいのですが どういうコードを書けばいいのでしょうか? できれば Book1.xls、Book2.xls以外のファイルも開いていても動作するようにしたいです。 ご教授よろしくお願い致します。
- みんなの回答 (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
その他の回答 (4)
- fujillin
- ベストアンサー率61% (1594/2576)
開いているブックを順に見ていって、探しているものかどうかを調べ、見つからなければ開いていない、見つかれば開いていると判断するのではどうでしょうか? 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)
セル 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
お礼
ありがとうございます。
- masa_019
- ベストアンサー率61% (121/197)
こんにちは。 こんなのとか・・・。 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
お礼
ありがとうございます。
- f272
- ベストアンサー率46% (8623/18441)
こんな感じ? On Error Resume Next Err.Clear Workbooks.Open Filename:="C:\Book1.xls", Notify:=False If Err.Number > 0 Then MsgBox "Book1.xlsは開いています" Endif
お礼
あら? Book1を開いてないのに、開いてます。になってしまいました。 もう一度やってみます。
お礼
おお! ありがとうございます。