[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別ブックを開くマクロ』(ゴンタ)
同じフォルダに"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.