今回は、エクセルの表を埋め込み形式でパワーポイントに貼り付けるVBAのコードをつくりました。
毎月、会議で発表するために、エクセルで集計した色々なデータを表やグラフにして、そこからパワーポイントのスライドを作っていたのですが、エクエルの表やグラフをそのままパワーポイントに貼り付けられたら・・・
さらにそれをパワーポイント上で編集することができたら・・・
さらに、さらにその処理を自動化できたらと思い、VBAのコードを作りました。
〇VBAのコード
以下がエクセルの表をパワーポイントに埋め込み形式で貼り付けるコードになります。
Sub 埋め込み形式で貼り付け()
Dim ppa As Object
Dim PPT
Dim ac
Set ac = ActiveWorkbook
Set ppa =
CreateObject("PowerPoint.Application")
Set PPT = ppapp.Presentations.Open("C:\Users\0000\Desktop\任意のパワポのパス.pptx")
ac.Activate
Sheets("SS2").Select
Range("c3:af21").Copy
PPT.Slides(1).Select
ppa.CommandBars.ExecuteMso
"PasteAsEmbedded"
Set ac = Nothing
Set ppa = Nothing
Set PPT = Nothing
End Sub
〇VBAのコードの解説
・変数を宣言しています。
Dim ppa As Object
Dim PPT
Dim ac
・コピペするエクセルのワークブックを変数に代入しています。
Set ac = ActiveWorkbook
・パワーポイントアプリケーションをCreateObject関数で生成します。
Set ppa =
CreateObject("PowerPoint.Application")
・任意のパワーポイントを開き、変数に代入しています。
Set PPT = ppapp.Presentations.Open("C:\Users\0000\Desktop\任意のパワポのパス.pptx")
・変数acに代入したエクセルのワークブックを選択。
ac.Activate
・エクセルのSS1というシートを選択。
Sheets("SS1").Select
・任意のセル範囲をコピーします。
Range("c3:af21").Copy
・開いたパワーポイントの1枚目のスライドを選択します。
PPT.Slides(1).Select
・パワーポイントの右クリックメニューから埋め込み形式で貼り付けを行います。
ppa.CommandBars.ExecuteMso
"PasteAsEmbedded"
・変数の開放を行っています。
Set ac = Nothing
Set ppa = Nothing
Set PPT = Nothing
End Sub
〇マクロをつかってみて
たくさんのスライドに埋め込みたいときは、For文を使って一括処理をしたくなります。
しかし、実際に、一括処理をしたところ、埋め込みが不安定で、埋め込めないスライドが発生してしまいました。
Wait関数を使って、待ち時間を作ってみても改善されませんでした。
コードをたくさん作って、順に動かしてみてはどうかとも、検証してみましたが、やはり不安定になりました。
現在では、スライドごとにシートへ埋め込むマクロを設置して、それを順に押すとうまく運用できています。
あと、エクセルを埋め込み形式にすると容量が重くなってしまいます。
少ないスライドのときならいいですが、スライドの数が30枚とかあるなら、図で貼り付けた方がいいかもしれませんね。
〇まとめ
エクセルからパワーポイントに表を埋め込むときは、CreateObject関数で、パワーポイントを生成して、コマンドバーのExecuteMsoメソッドを使います。
普通のペーストには“埋め込み形式で貼り付け”はありません。
ここに気づくのに時間がかかってしまいました。
0 件のコメント:
コメントを投稿