VBAにてWorkbooks(\u0026quot;ブック名\u0026quot;)の場合とWorkbooks(\u0026quot;ブック名.xlsx\u0026quot;)の拡張子を記入しないといけない場合があります。なぜなのかご教授願います。使用する端末によって違う場合があります。よろしくお願いします。

1件の回答

回答を書く

1280741

2026-01-05 13:25

+ フォロー

\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

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有