ファイルが開いているか確認する関数

タイトルのマクロは、以下です。

'********************************************************
'* ファイルが開いているか確認する関数。20180118
'* strBookName(String型):チェックするブック名
'* 戻り値:ブックが開いていればTrue、開いていなければFalse
Function fncXlsOpen(strBookName As String) As Boolean

  Dim objWB As Workbook ' Workbookオブジェクトを宣言
  
  fncXlsOpen = False ' 初期値をFalseに設定
  
  ' 開いている全てのブックをチェック
  For Each objWB In Workbooks
      ' ブック名が一致するか確認
      If objWB.Name = strBookName Then
          fncXlsOpen = True ' 一致するブックが見つかったらTrueに設定
          Exit For ' ループを終了
      End If
  Next objWB

End Function

機能概要

この関数は、指定したブック(Excelファイル)が現在開かれているかどうかを確認し、開かれている場合は True を、開かれていない場合は False を返します。

引数

  • strBookName(String型): チェックするブック名(ファイル名)。

戻り値

  • Boolean 型: ブックが開いていれば True、開いていなければ False を返します。

コードの詳細

  • 関数の定義を行います。関数名は fncXlsOpen で、引数としてブック名 strBookName を受け取ります。
  • Workbook オブジェクトを宣言します。このオブジェクトは、開いている各ブックを順番に指します。
  • 関数の戻り値を False に初期化します。これは、指定されたブックが開いていないと仮定しての設定です。
  • 開いている全てのブックを Workbooks コレクションで順番にループします。
  • ループ内で、各ブックの名前をチェックします。
    • If objWB.Name = strBookName Then: 現在のブック名が引数 strBookName と一致するか確認します。
    • fncXlsOpen = True: 一致する場合、関数の戻り値を True に設定します。
    • Exit For: 一致するブックが見つかったので、ループを終了します。
  • ループを続けます。すべてのブックがチェックされるか、一致するブックが見つかるまで繰り返します。

使用例

この関数を使用して、特定のブックが開いているかを確認する例を示します。

Sub CheckIfWorkbookIsOpen()
    Dim bookName As String
    bookName = "Example.xlsx" ' 確認したいブック名を設定

    If fncXlsOpen(bookName) Then
        MsgBox bookName & " は開いています。"
    Else
        MsgBox bookName & " は開いていません。"
    End If
End Sub

このサブプロシージャは、Example.xlsx という名前のブックが開いているかどうかを確認し、メッセージボックスで結果を表示します。

Follow me!