Pythonの外部ライブラリpywin32・win32com.clientを使えば、Excel VBAにかなり近いコードでExcelを操作できます。
ただし、いくつかの注意点があります。
Worksheet.Copyメソッドで引数Afterを指定する際の挙動は、
ハマってしまう方が少なくないように思えます。
Excel.Worksheet.Copyで引数Beforeを指定する場合
何らかのExcelブックが開かれた状態で以下のスクリプトを実行すると、アクティブシートが、アクティブシートの前(Before)にコピー(複製)されます。
xl_app = win32.GetObject(Class='Excel.Application')
xl_app.ActiveSheet.Copy(Before=xl_app.ActiveSheet)
上記スクリプトの
xl_app.ActiveSheet.Copy(Before=xl_app.ActiveSheet)
の部分を
xl_app.ActiveSheet.Copy(After=xl_app.ActiveSheet)
に指定してやれば、アクティブシートの後ろ(After)にコピーされそうなものですが、残念ながらそうはなりません。
アクティブシートが、新規ブックに複製されてしまいます。
Worksheet.Copyメソッドの2つの引数Before・Afterいずれも指定しなかったときと
同じ挙動になってしまうのです。
Excel.Worksheet.Copyで引数Afterを指定するには
ExcelのWorksheet.Copyメソッドの引数Afterを有効にするには、以下のようなコードにしてください。
xl_app = win32.GetObject(Class='Excel.Application')
xl_app.ActiveSheet.Copy(Before=None, After=xl_app.ActiveSheet)
引数BeforeにPythonの組み込み定数Noneを指定してやれば、引数Afterが効くようになります。
xl_app.ActiveSheet.Copy(Before=None, After=xl_app.ActiveSheet)
最終更新日時:2023-06-26 17:36
- Newer:Shape内の文字列操作はExcel VBAよりxlwingsのほうがシンプルに書ける
- Older:CurrentRegion.SpecialCells(xlCellTypeVisible).Copyとは
Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientでExcel.Worksheet.Copyの引数Afterを指定するには