「python excel シート追加」
といった検索キーワードで、アクセスがありました。
PythonでExcelにワークシートを追加するには、どのようなコードを書けばいいのか探していた方による検索です。
利用する外部ライブラリによって、さまざまな書き方をできますが、この記事ではpywin32を使ったコードをご紹介します。
指定シートの前にワークシートを追加するサンプル
Excelが起動した状態で、以下のコードを実行すると、先頭シートの前に、新規ワークシートが挿入されます。
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にシートを追加する