タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

エクセルの表を埋め込み形式でパワーポイントに貼り付ける方法【VBA】

VBA

t f B! P L

 

エクセルの表

今回は、エクセルの表を埋め込み形式でパワーポイントに貼り付ける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メソッドを使います。

普通のペーストには“埋め込み形式で貼り付け”はありません。

ここに気づくのに時間がかかってしまいました。

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ