「python win32com 画像挿入」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがありました。
pywin32・win32comを使って、画像を挿入するには、どのようなコードを書けばいいのかを探していた方による検索です。
どのWindowsアプリケーションでの話か不明ですが、起動済みExcelのアクティブシートに画像を挿入するサンプルスクリプトをご紹介します。
Excelのアクティブシートに画像を挿入するサンプル
Cドライブのtempフォルダーにsample.jpgが存在している状態で、画像を挿入したいワークシートがアクティブな状態で、以下のスクリプトを実行してみてください。
xl_app = win32com.client.GetObject(Class='Excel.Application')
active_sheet = xl_app.ActiveSheet
Filename=r'C:\temp\sample.jpg',
LinkToFile=False,
SaveWithDocument=True,
Left=0,
Top=0,
Width=-1,
Height=-1
)
サンプルスクリプトで行っている処理
最初の2行
import win32com.client
xl_app = win32com.client.GetObject(Class='Excel.Application')
は、win32com.clientを使って起動済みExcelを操作するための、Python特有のコードです。
最初に、Excel.Applicationオブジェクトの、ActiveSheetプロパティでアクティブなシートへの参照取得して、変数active_sheetへ代入しておきます。
active_sheet = xl_app.ActiveWorkbook.ActiveSheet
残りはご紹介済みのExcel VBAと似たコードです。
7つの引数を指定して、
active_sheet.Shapes.AddPicture(
Filename=r'C:\temp\sample.jpg',
LinkToFile=False,
SaveWithDocument=True,
Left=0,
Top=0,
Width=-1,
Height=-1
)
ShapesコレクションのAddPictureメソッドを実行しています。
VBAの場合、戻り値を使うか否かで引数を括るか括らないかを変更する必要がありますが、Pythonの場合は上記のとおり引数を括る必要があります。
引数名と引数の間はVBAの場合「:=」ですが、Pythonの場合は「=」です。
Excelのアクティブシートに画像挿入後サイズを変更するサンプル
アクティブシートに画像を挿入した後に、画像のサイズを変更する場合は以下のようなスクリプトです。
xl_app = win32com.client.GetObject(Class='Excel.Application')
active_sheet = xl_app.ActiveSheet
shp = active_sheet.Shapes.AddPicture(
Filename=r'C:\temp\sample.jpg',
LinkToFile=False,
SaveWithDocument=True,
Left=0,
Top=0,
Width=-1,
Height=-1
)
shp.Width = 300
先ほどの、画像挿入のみを行うスクリプトとほとんど同じですが、Shapes.AddPictureメソッドの戻り値を変数shpに代入しておいて、
shp = active_sheet.Shapes.AddPicture(
Shape.LockAspectRatioプロパティにTrueを設定して、
shp.LockAspectRatio = True
画像の幅を設定しているコードを追加しています。
shp.Width = 300
Home » Python » pywin32・win32comの使い方 » pywin32・win32comでExcelに画像を挿入する