【VBA】開いている全ブックから対象ブックをセット|InStr ファイル名の一部で判定
作成日:2022-12-25
更新日:2025-10-04

開いているブックをループして、対象のファイル名(一部)があればセットする

見つからないときはマクロ終了
' Get workbook by (partial) name|部分一致でブックを取得
' 見つからなければ Nothing を返す
Public Function GetBookByName(ByVal fileName As String) As Workbook
Dim wb As Workbook
For Each wb In Application.Workbooks
If InStr(1, wb.Name, fileName, vbTextCompare) > 0 Then
Set GetBookByName = wb
Exit Function
End If
Next wb
' 見つからなければ Nothing
Set GetBookByName = Nothing
End Function呼び出し元
Sub ExampleUsage()
Dim target As Workbook
Set target = GetBookByName("Sample")
If target Is Nothing Then
MsgBox "対象ブックが見つかりません。"
Exit Sub
End If
' 処理続行
MsgBox "見つかった: " & target.Name
End Sub責務の分離|Responsibility Separation

役割は分けるほうが自然
- 検索する関数 → Workbook を返すだけ
- UI通知 → 呼び出し元で実施
- 関数:「見つけたら返す/なければ Nothingを返す」
- 呼び出し側:メッセージや処理終了

InStrの説明
Keep logic pure,
let caller handle messages.
let caller handle messages.

同じ処理をPythonでも書いてみよう
2022-12-25
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

[VBA]extract the filenamefrom a full path 【VBA】フルパスからファイル名と拡張子を取得する|fso.GetFileName/GetBaseName/GetExtensionName -

[VBA]開始と終了イベント停止と再開 【VBA高速化】開始と終了のルーチン呼び出し -

[VBA]Horizontal Paste1D array 【VBA】一次元配列を横方向にシートに貼り付け【範囲をリサイズする】 -

[VBA]ClearContentsシート初期化 【VBA】シートの初期化|ClearContentsで値のみ削除 -

時間計算のDateAdd 【VBA】DateAddで時間の足し算・引き算 -

[VBA]Trimwhitespace 【VBA】先頭,末尾,両端の空白を削除する|Trim