Home » Python » pywin32・win32comの使い方 » pywin32を使ってExcelにシートを追加する

pywin32を使ってExcelにシートを追加する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2008 ビルド13127.20408 Microsoft Store)+ Python 3.8.3 + pywin32 228

「python excel シート追加」
といった検索キーワードで、アクセスがありました。

PythonでExcelにワークシートを追加するには、どのようなコードを書けばいいのか探していた方による検索です。

利用する外部ライブラリによって、さまざまな書き方をできますが、この記事ではpywin32を使ったコードをご紹介します。

[スポンサードリンク]

指定シートの前にワークシートを追加するサンプル

Excelが起動した状態で、以下のコードを実行すると、先頭シートの前に、新規ワークシートが挿入されます。

import win32com.client
xl_app = win32com.client.GetObject(Class='Excel.Application')
sh = xl_app.Sheets(1)
xl_app.Sheets.Add(Before=sh)

Excel VBAの、以下のようなコードと似たコードです。
  Dim xl_app As Application
  Set xl_app = Application
  Dim sh As Worksheet
  Set sh = xl_app.Sheets(1)
  xl_app.Sheets.Add Before:=sh

指定シートの後ろ側に追加する場合は要注意

指定したシートの後ろ側に追加する場合は、注意が必要です。
  xl_app.Sheets.Add(Before=sh)
で、変数shに参照が代入されているシートの前に追加ができるのですから、
  xl_app.Sheets.Add(After=sh)
で、後ろ側に追加できて良さそうなものですが、ダメです。

shシートの後ろに追加したい場合には、
  xl_app.Sheets.Add(None, After=sh)
あるいは、
  xl_app.Sheets.Add(Before=None, After=sh)
などとしてください。

pywin32を使った場合には、名前付き引数を使えないためです。

上記のコードを、拙著『VBAユーザーのためのPython超入門』でも多用しているIDLEのShellウィンドウから実行する様子を動画にしています。よろしければご覧ください。→ YouTube「pywin32を使ってExcelにシートを追加する」


位置引数ですから
  xl_app.Sheets.Add(None, sh)
というコードでも、変数shに格納されているシートの後ろに追加が可能ですけれど、このコードではどこに追加されるのかわかり辛いので、引数名を明記するほうがイイだろうと感じます。

VBAで(Before=None, After=〇)のような書き方をする場合

VBAで名前付き引数を使う場合は、
  xl_app.Sheets.Add After:=sh
のように書いてしまいますが、pywin32のような書き方もできます。名前付き引数Beforeを明示しつつ、AfterをVBAで指定する場合は、
  xl_app.Sheets.Add Before:=Null, After:=sh
としてください。

最終更新日時:2020-10-08 14:18

[スポンサードリンク]

Home » Python » pywin32・win32comの使い方 » pywin32を使ってExcelにシートを追加する

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

検索


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

.