[python] pywin32でexcel操作 Shape操作のメモ

前回の基本に続いて、調べたところで悩んだことを中心にPywin32のExcel操作メモ。

まず、未だにやり方が見つからない(書いてある方法だとできない)事から。
新しいExcelシートを作って保存する…というのがどうにもこうにも出来ません。

シートを作るだけなら、

上の1行でOKなのですが、コレを保存するというのが出来ずいまだにぐぬぬ…になってます。
誰か教えてください

仕方ないので

xlwtを使用して空のExcelを生成してから、これをOpenする…というので代用中です。

まず、Shape作成のShapeの型は数字で指定しますが
数字指定はものすごくめんどくさいのと、VBAマクロで探そうとするとEnum?っぽいので表示されてわかりにくいので、クラスを作って見ました。

https://gist.github.com/fereria/3179f90482c1a3d1a3df

作成は、Shapes.AddShape(形,配置位置(高さ),配置位置(横),大きさの横幅,大きさの縦幅)
AddShapeのリターンでShapeへアクセスするためのオブジェクトを取得できるので
作成したオブジェクトを編集したい場合は、

こんな感じで、VBAと同様に数値をセットしていけばOKです。

そのほか定番

VBAの構造は、 WorkBooks > Sheet > Shapes のように親子化していて、
各種プロパティも親からたどっていって指定できる…のように脳内理解しました。
PyWin32で遊ぶのと同時にVBAを勉強していけば
もうちょっと効率よく覚えられそうな気がします。

もうちょっとがんばろう

コメントを残す

メールアドレスが公開されることはありません。


*