- ベストアンサー
Excel VBAで既に開いているワークブックの一覧取得
- Excel VBAで既に開いているワークブックの一覧を取得する方法を教えてください。
- Excel VBAのコードを使用して、既に開いているワークブックの一覧を取得したいです。
- Excel VBAで既に開いているワークブックの名前を取得する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
[No.1] です。 すでに解決済みと思いますが、一応回答しておきますね。 Sub test() __Dim wb As Object __For Each wb In GetObject(, "Excel.Application").Workbooks ____Debug.Print wb.Name __Next wb End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
全くおかしい。その分野に、不勉強な時に、類推でやるのも「あり」だが、簡単に行かないことが多い。 Books、DocumentsのレベルはFileです。 (For Each wb In CreateObject("Excel.Application").Workbooksは珍奇です) ワードの文書はWorkbooksではない。生兵法」。 そしてVBA(Word)でやるより、VBScriptを勧める。 ーー 例 docmのファイル名一覧 Sub test01() Dim fso Set fso = CreateObject("Scripting.FileSystemObject") Dim foldern As String fldern = "C:\Users\??\XXX" Dim folder Set folder = fso.getFolder(fldern) ' ファイル一覧 Dim file i = 1 For Each file In folder.Files If fso.GetExtensionName(file) = "docm" Then Debug.Print file.Name End If i = i + 1 If i > 1000 Then Exit For '必ずしも必要ない」 Next End Sub こんなところへ質問せずに、Googleで「vbscript ファイル一覧」などで照会し、コードを真似し、一部修正したほうがまし。 ーー このテーマに関しては、Dir関数を使う方法がある。WEB照会して勉強!。
- masnoske
- ベストアンサー率35% (67/190)
CreateObject だと、そのExcelで開いたブックが操作対象になります。 別途開いたブックを操作対象にするなら、GetObject でExcel を捉える必要があったかと。
補足
勘違いされているようなので、 Excelのブックからデータを参照してWordへ書き込む処理をするにあたって・・・ Excel VBAからWord VBAに移行したプログラムです。 あくまでもWord VBAでExcelのブックからデータを参照する過程での処理です。 「ワードの文書はWorkbooksではない。」は百も承知です。