スポンサードリンク

会社でExcel VBAを使ってデータ処理を行う際に
別ファイルのデータを参照したい事が多く
前回も別ファイルを開いて作業を行いました。
【(Excel VBA)閉じているブックからデータを取得する 第2弾】
その際、別ファイルを開いていると
処理でエラーを吐き出すことがあったため
ファイルが開いているか判定をして
ファイルが開いていても開いていなくても
オブジェクトを取得して作業できるようにしました。
スポンサードリンク
ファイルが開いているか判定するためFor Eachステートメントを使う

For Eachステートメントを使用して
現在開いているすべてファイルのフルパスを取得して
調べたいファイルのフルパスと比較して
ファイルが開いているか開いていないかを判定します。
Sub Test() Dim OpenFilePath As String '調べたいデータのフォルダへのフルパス Dim OpenFileName As String '調べたいファイル名 Dim OpenFile As String '調べたいデータフルパス+調べたいファイル名 Dim BookCheck As Workbook 'ファイルチェック用 Dim BookFlag As Boolean 'ファイル判定用 Dim OpenBook As Workbook 'データファイル操作用 OpenFilePath = "C:\Users\Public\Desktop" 'デスクトップへのパス OpenFileName = "Test.xlsx" 'ファイル名 OpenFile = OpenFilePath & "\" & OpenFileName 'データフルパス+ファイル名 '◆データを開いているかチェック For Each BookCheck In Workbooks '開いているファイルすべてのフルパスをループさせる If BookCheck.Name = OpenFileName Then ’判定したいファイルのフルパスと比較 BookFlag = True '一致すれば【Ture】を返す End If Next BookCheck If BookFlag = False Then '◆ファイルが開いてなければファイルを開く Set OpenBook = Workbooks.Open(OpenFile) Else '◆ファイルが開いていたらファイル名で取得 Set OpenBook = Workbooks(OpenFileName) End If '▼▼▼ここから作業を記述していく▼▼▼ '~ End Sub
Workbookオブジェクトを使うと
現在開いているエクセルファイルすべてのファイル名とファイルパスを取得するため
比較したいファイル名とフルパスで比較します。
その際、IF分を使い判定をして
次のIF分にて、開いていない場合と
開いている場合の処理を行います。
ここではファイルをWorkbookオブジェクトにして
この後、処理させていきます。
Workbookオブジェクトは開いていない場合
Openメソッドを使うのですが、
その際はファイル名とファイルパスが必要です。
開いている場合はOpenメソッドは使わないので
ファイル名だけで問題ありません。
ここがいまいち理解に苦しみました。
スポンサードリンク