2024年4月13日土曜日

pptのvbaについて調べたメモ

 pptのvbaについて調べたメモ


複数のグラフを選択してpptに貼り付けるのが遅いのを改善しようとして色々と調べています。

Excelで12個のグラフを選択して、pptにピクチャで貼り付けるのに4秒かかります。

デバイスに依存しないピクチャ(DIB)は2秒程度で早いのですが、vbaで設定がありません。

SVGも2秒くらいなのですが、今度は貼り付けた後のサイズ変更に時間がかかってしまいます。

SVG形式はメタファイルよりも高速で貼り付けられるし、拡大してもきれいで優秀なのですが、あまりwebに情報が載っていません。PasteSpecialのdatatypeは12 (ppPasteSVG)です。

pptのグラフィック処理が遅いのではないかと考えています。

エクセル側で図としてコピーなども試してみましたが遅かったです。


The Voyage of a neuromancer
PowerPointにはScreenUpdatingがない

https://neuromancer-sho.hatenablog.com/entry/20130308/1362743363


hiroshi akutsuの日記
vba【図としてコピーした画像をpower pointへ貼り付け時に変数に代入】

https://hakoniwahaniwa.hatenablog.com/entry/2014/12/16/101720






2024年4月6日土曜日

Excel vbaで複数グラフを選択する

 Excel vbaで複数グラフを選択する


直接この記事と関係ないけど、下記のvbaのリストがとても良いです。

Kunihito TOBITA Office (飛田国人)

Excel: VBA覚え書き 

http://www.ess.osakafu-u.ac.jp/human/tobita/2018/08/16/excel3/


'これが基本
ActiveSheet.Shapes.Range(Array("グラフ 1", "グラフ 2")).Select

'これはNG
a=Array("グラフ 1", "グラフ 2")
ActiveSheet.Shapes.Range(a).Select


'これはOK
Dim a() As Variant
a=Array("グラフ 1", "グラフ 2")
ActiveSheet.Shapes.Range(a).Select

'これもOK
ReDim a(0 To 1)
a=Array("グラフ 1", "グラフ 2")
ActiveSheet.Shapes.Range(a).Select

'これはNG
aa1 = "グラフ 1,グラフ 2"
buf2 = Split(aa1, ",")
ActiveSheet.Shapes.Range(buf2).Select

'Variant/Variantでないとダメみたい。






追記
詳しい理由はわからないけど配列に代入しておいて、Rangeのカッコの中でJoinしてsplitするといけるっぽい。