Home » Python » pywin32・win32comの使い方 » pywin32・win32comを使ってExcelのブック名を取得するには

pywin32・win32comを使ってExcelのブック名を取得するには

動作検証バージョン:Windows 11 Home + Python 3.10.6(64-bit) + pywin32 305 + 64bit Excel

「win32com python ブック名」
といった検索キーワードでアクセスがありました。

Pythonの外部ライブラリpywin32・win32com.clientを使って、Excelのブック名を取得するコードを調べていらしたのでしょう。

[スポンサードリンク]

アクティブなExcelブック名を取得する

Excelのブックが1つ開かれている状態で、以下のスクリプトを実行すると、そのブック名が出力されます。

import win32com.client as win32

xl_app = win32.GetObject(Class='Excel.Application')
print(xl_app.ActiveWorkbook.Name)

Excel VBAではない、Access VBA・Word VBA・PowerPoint VBAなどの場合、以下のコードでアクティブなExcelブック名がイミディエイトウィンドウに出力されます。

Dim xl_app As Object
Set xl_app = GetObject(Class:="Excel.Application")
Debug.Print xl_app.ActiveWorkbook.Name

win32com.clientのコードは、このVBAのコードに相当します。
Excelライブラリが公開しているプロパティを、Pythonのwin32com.client経由で利用するか、VBAから使用するかの違いです。

もちろんExcel VBAであれば、

Debug.Print ActiveWorkbook.Name

だけで済みます。

開かれている全ブック名を取得する

複数のExcelブックが開かれている状態で、以下のスクリプトを実行すると、全ブック名が出力されます。

import win32com.client as win32

xl_app = win32.GetObject(Class='Excel.Application')

for xl_book in xl_app.Workbooks:
    print(xl_book.Name)

VBAからの場合、以下のようなコードで全ブック名がイミディエイトウィンドウに出力されます。

Dim xl_app As Object
Set xl_app = GetObject(Class:="Excel.Application")

Dim xl_book As Object
For Each xl_book In xl_app.Workbooks
  Debug.Print xl_book.Name
Next

もちろん、Pythonのwin32com.clientを経由して取得するか、VBAから取得するかの違いです。

こちらもExcel VBAであれば、

Dim xl_book As Workbook
For Each xl_book In Workbooks
  Debug.Print xl_book.Name
Next

で済みます。

[スポンサードリンク]

Home » Python » pywin32・win32comの使い方 » pywin32・win32comを使ってExcelのブック名を取得するには

「pywin32・win32comの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.