こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルファイルが既に開いてるのなら開かない

エクセルファイルが既に開いてるのなら開かない
としたいです

Sub test()
Dim app As Excel.Application
Dim book As Excel.Workbook

app = CreateObject("Excel.Application")
If app.ReadOnly Then
MsgBox("既に開いています")
End If

End Sub

このようにやろうと思ったけど、
これじゃファイル名をしてしてないから無意味ですよね

しかも上記のコードを実行したら

---------------------------------------------------------
型 'System.MissingMemberException' のハンドルされていない例外が Microsoft.VisualBasic.dll で発生しました

追加情報: 公開メンバー 'ReadOnly' は型 'ApplicationClass' に見つかりませんでした。
---------------------------------------------------------
というエラーが発生しました。

Sub test()
Dim app As Excel.Application
Dim book As Excel.Workbook

app = CreateObject("Excel.Application")
app.Visible = True
book = app.Workbooks.Open("C:\Users\test.xlsm")
End Sub

このようにして、エクセルファイルを開くコードは分かるのですが、
このコードに、「既に開いているのなら開かない」という処理を付け加えたいです。

よろしくお願いします。

投稿日時 - 2013-04-20 17:40:46

QNo.8051720

困ってます

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

こんな感じでいかがでしょうか?

Sub test()
Dim book As Workbook
Dim BF As Boolean
For Each book In Workbooks
If book.Name = "test.xlsm" Then
BF = True
Exit For
End If
Next
If BF Then MsgBox ("既に開いています")
Set book = Workbooks.Open("C:\Users\test.xlsm")
End Sub

投稿日時 - 2013-04-20 18:04:51

お礼

ご回答ありがとうございました。

投稿日時 - 2013-05-05 20:02:20

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問