Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientでExcel.Worksheet.Copyの引数Afterを指定するには

pywin32・win32com.clientでExcel.Worksheet.Copyの引数Afterを指定するには

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

Pythonの外部ライブラリpywin32・win32com.clientを使えば、Excel VBAにかなり近いコードでExcelを操作できます。

ただし、いくつかの注意点があります。
Worksheet.Copyメソッドで引数Afterを指定する際の挙動は、

ハマってしまう方が少なくないように思えます。

[スポンサードリンク]

Excel.Worksheet.Copyで引数Beforeを指定する場合

何らかのExcelブックが開かれた状態で以下のスクリプトを実行すると、アクティブシートが、アクティブシートの前(Before)にコピー(複製)されます。

import win32com.client as win32

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を有効にするには、以下のようなコードにしてください。

import win32com.client as win32

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

[スポンサードリンク]

Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientでExcel.Worksheet.Copyの引数Afterを指定するには

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

検索


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

.