win32ole で Excel を使う(6)

Excel2003 以降、グループ化したオートシェイプに対する操作はそのままではエラーとなるので、一旦解除して操作後に再度グループ化しないといけない。

グループ化されたテキストボックス(図形) から値を取得
# グループ化解除。グループのメンバが戻り値として取得できる
grp = sheet.Shapes("グループ 3").Ungroup

# 操作を実行
sheet.Shapes("テキスト 1").TextFrame.Characters.Text

# 再度グループ化
grp.Group
グループ化されたテキストボックス(図形) に値をセット
# グループ化解除。グループのメンバが戻り値として取得できる
grp = sheet.Shapes("グループ 3").Ungroup

# 操作を実行
sheet.Shapes("テキスト 1").TextFrame.Characters.Text = "XXX"

# 再度グループ化
grp.Group

なおExcel2000まではグループ化したままで操作が可能。