【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】グラフ設定を動的に変更する -

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

[VBA]openbook 【VBA】ブックを開く|OpenBook -

ユーザーフォームにドラッグ&ドロップ 【VBA】ドラッグアンドドロップできるユーザーフォーム|ListView -

[VBA]Nameでパス変更 【VBA】ブックのフルパスを変更する(ファイル名の変更も含む)|Name -

[VBA]get fso objectfrom path 【VBA】パスからfsoオブジェクトを取得する|fso.GetFolder/.GetFile