Home » Python » xlwingsの使い方 » xlwingsで全画像を削除する-Picture.delete()メソッド

xlwingsで全画像を削除する-Picture.delete()メソッド

動作検証バージョン:Windows 11 Home + Python 3.10.6(64-bit) + xlwings 0.29.1 + 64bit Excel(バージョン2304 ビルド16327.20134)

「xlwings 写真 削除」
といった検索でアクセスがありました。

この記事では、Excelを操作するPythonの外部パッケージ「xlwings」を使って、ワークシート上の全画像を削除するスクリプトをご紹介します。

xlwingsで画像を削除するサンプル

画像の存在するワークシートがアクティブな状態で、以下のスクリプトを実行してください。

import xlwings as xw

sht = xw.sheets.active
for pic in sht.pictures:
    pic.delete()

アクティブシート上の画像が削除されます。

xlwingsで画像を削除する処理

Sheetオブジェクトに用意されているpicturesプロパティを使うと、ワークシート上に存在する全画像を表すPicturesコレクションを取得できます。

Picturesコレクションの要素であるPictureオブジェクトを、for文で順番に取得して、Picture.delete()メソッドで削除しています。

拙著『理解するExcel VBA/図形操作の基本』の、[7-5. Rectangle・Oval・DrawingObjects とは]で、RectangleやOvalといったExcel VBAのレガシーオブジェクトについて解説しています。

レガシーオブジェクトはたくさんの種類が存在しており、画像を表すPicturesコレクションや

Pictureオブジェクトも

隠しオブジェクトとして存在しています。

xlwingsのPicturesコレクションやPictureオブジェクトは、そのようなExcel VBAのPicturesコレクション・Pictureオブジェクトのラッパーオブジェクトです。

ただし、Excel VBAのPicturesコレクションには削除を行うDeleteメソッドも用意されていますけれど、

xlwingsのPicturesにdelete()メソッドが実装されていないため、先述のスクリプトではfor文でPictureオブジェクトを順番に取得して、単独の画像を表すPictureオブジェクトdelete()メソッドで削除しています。

Pictures.apiプロパティを使う場合

Picturesコレクションのapiプロパティを経由して、Excel VBAのPicturesコレクションを取得すれば、先ほどの

for pic in sht.pictures:
    pic.delete()

の部分は、以下のようにfor文を使わずに書くことも可能です。

sht.pictures.api.Delete()
[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsで全画像を削除する-Picture.delete()メソッド

「xlwingsの使い方」の記事一覧

検索


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

.