ファイルが開いているか確認する関数
タイトルのマクロは、以下です。
'********************************************************
'* ファイルが開いているか確認する関数。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
という名前のブックが開いているかどうかを確認し、メッセージボックスで結果を表示します。