[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別ブックを開くマクロ』(ゴンタ)
同じフォルダに"A"というブックと"B"というブックがあり "A"に("B"を開く)マクロを書いています
Workbooks.Open ThisWorkbook.Path & "\B.xls"
ところが、このマクロを実行するまえに"B"が開かれていた場合 当然のことながら
"B.xlsは既に開いています。2重に開くと、これまでの変更内容は破棄されます。B.xlsを開きますか?"
のメッセージが出てきます そこで教えていただきたいのは、"B"が閉じていれば開く、開いていれば何もしない と言う内容のマクロにしたいのです。 宜しくお願いします。 Excel2003,WindowsXPです
サンプルコードです。
Dim wb As Workbook
Dim flg As Boolean
fls = False
For Each wb In Workbooks
If wb.Name = "B.xls" Then
MsgBox "B.xlsは既に起動しています。"
flg = True
End If
Next
If flg = False Then
MsgBox "B.xlsは開いていませんでした。"
End If
(MARBIN)
書いていただいたコードでブックが開いているのかどうかの状態が取得できるのですね。 MARBINさん ありがとうございます 参考にさせていただき下記のようにして目的のものができました
Sub Bが閉じていたら開く()
Dim wb As Workbook
Dim flg As Boolean
flg = False
For Each wb In Workbooks
If wb.Name = "B.xls" Then
flg = True
Exit Sub
End If
Next
If flg = False Then
Workbooks.Open ThisWorkbook.Path & "\B.xls"
End If
End Sub
いろいろと応用ができそうなのですが、
flg = False
For Each wb In Workbooks
If wb.Name = "B.xls" Then
flg = True
この部分がなかなか理解できない状態です
よろしかったら解説いただけませんでしょうか (ゴンタ)
コードの意味はこんな感じです。
flg = False '判定用フラグを下げておく
For Each wb In Workbooks 'ワークブックオブジェクトをループ
If wb.Name = "B.xls" Then 'ワークブックオブジェクトの名前が"B.xls"だったら
flg = True '判定用フラグを立てる
(MARBIN)
こんな方法も...
Sub test()
If Not IsFileOpen("B.xls") Then Workbooks.Open(ThisWorkBook.Path & "\B.xls")
End Sub
Function IsFileOpen(myFileName As String) As Boolean On Error Resume Next IsFileOpen = Workbooks(myFilename).Name = myFileName End Function
なんとか理解できそうです。 有難う御座いました。 これからいろんな事に活用させていただきます。(ゴンタ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.