\u0026gt;VBAにてWorkbooks(\u0026quot;ブック名\u0026quot;)の場合とWorkbooks(\u0026quot;ブック名.xlsx\u0026quot;)の拡張子を記入しないといけない場合があります
どのようにして確認したのでしょう
\u0026quot;ブック名\u0026quot;は名前です
Workbooks コレクションが「開いているブックの 表示名(Name プロパティ)」で管理されているので
環境を排除した場合
拡張子が必要
通常のExcelブック
保存済み
拡張子付きで開かれている
----
拡張子が不要(使えない)
新規作成直後・未保存のブック
保存済みであれば拡張子があるので拡張子付きで通常は書きます
Workbook.Name (Name プロパティ)
Workbooks() は ファイル名そのものではなく、
開いているブックの Name プロパティ をキーに参照します
開いているブックの Name プロパティ の調べ方例
Dim wb As Workbook
For Each wb In Workbooks
Debug.Print wb.Name
Next
一時作成の作業ブックなどの場合
ThisWorkbook / ActiveWorkbook などで特定する方法があります
環境的な問題
「拡張子を表示しない」Windows設定(認識)
VBA内部では基本「Name」が正ですが、人が目視で判断するとズレる原因になります
Workbooks(\u0026quot;〇〇\u0026quot;) は その端末の Excel が今そのブックを何という名前で認識しているかに依存します
またOneDrive / SharePoint 同期差なども考慮する必要があります
OneDrive 同期 ON / OFF・オンライン専用 / ローカル保存・同期未完了状態
レアケース端末によりダブルクリック / VBAから開く など
これらの事から
ブックを特定する場合、開いた時に変数に格納する方法が無難です
(Nameプロパティ に依存しない方法を採用する)
Dim wb As Workbook
Set wb = Workbooks.Open(path)
既に開かれている場合は
FullNameプロパティで比較して変数に格納する方法もあります
Dim wb As Workbook, targetWb As Workbook
For Each wb In Workbooks
If wb.FullName = \u0026quot;C:\\test\\ブック名.xlsx\u0026quot; Then
set targetWb = wb
Exit For
End If