本記事では、エクセル (Excel)に存在するテーブル・表のデータをパワーポイントに貼り付ける形で流し込み、自動で更新する方法を2つご紹介します。PowerPointに何度も手動でコピペを繰り返すことは、面倒でミスの原因にもなります。本記事でご紹介する方法を使用することで、自動的にデータを更新できるようになります。
結論
詳しい解説は個別のセクションで行いますが、こちらで簡単にExcelからPowerPointに表の貼り付け・自動更新を行い、データを流し込む方法を紹介します。
- エクセルの表をリンク貼り付けする
Ctrl + Alt + Vから[形式を指定して貼り付け]→[リンク貼付け]→[Microsoft Excel ワークシート オブジェクト]を選択し、Excelのデータを貼り付けることで、エクセルを更新すると自動でデータが更新される表をパワーポイントに貼り付けることができます。 - VBAで表のデータを自動更新する
下記のVBAを使用し、該当スライドの特定のデータをExcelから都度更新することができます。
([エクセル内のセル範囲]、[スライド番号(整数)]、[PPT内のテーブル名]、[PPT内でのテーブルの貼り付け開始セル位置]には、ご自身で値を入力してください。)
Sub UpdateChartData() ' Written by consulting-campus.site ' ' ' Dim ws As Worksheet Dim tbl As Range Dim strTargetShape As String, strTargetAddress As String Dim ppApp As Object, ppPres As Object, ppSlide As Object, ppShape As Object Dim intSlideNumber As Integer, intTargetRow As Integer, intTargetCol As Integer Set ws = ActiveCell.Worksheet ' ご自身で入力してください Set tbl = ws.Range([エクセル内のセル範囲]) ' 入力してください intSlideNumber = [スライド番号(整数)] ' 入力してください strTargetShape = [PPT内のテーブル名] ' 入力してください strTargetAddress = [PPT内でのテーブルの貼り付け開始セル位置] ' 入力してください ' PowerPointアプリケーションを開始または取得 On Error Resume Next Set ppApp = GetObject(, "PowerPoint.Application") If ppApp Is Nothing Then Set ppApp = CreateObject("PowerPoint.Application") On Error GoTo 0 Set ppPres = ppApp.ActivePresentation Set ppSlide = ppPres.Slides(intSlideNumber) ' スライド内のオブジェクトをループ For Each ppShape In ppSlide.Shapes If ppShape.Name = strTargetShape Then ' テーブルの場合 If ppShape.Type = msoTable Then ppSlide.Select intTargetRow = CLng(Mid(strTargetAddress, 2)) ' 行番号 intTargetCol = Columns(Left(strTargetAddress, 1)).Column ' 列番号 ' 表示されているセルのみをコピー tbl.SpecialCells(xlCellTypeVisible).Copy ' テーブルの特定のセルに値を貼り付け ppShape.Table.Cell(intTargetRow, intTargetCol).Select ppApp.CommandBars.ExecuteMso ("Paste") End If Exit For End If Next ' オブジェクトの解放 Set ppApp = Nothing Set ppPres = Nothing Set excelRange = Nothing Set tbl = Nothing Set ws = Nothing MsgBox ("Done") End Sub
PowerPointでエクセルの貼り付け・自動更新方法解説
本記事では、エクセル (Excel)に存在するテーブル・表のデータをパワーポイントに貼り付け、自動で更新する方法を下記の2パターンご紹介します。クリックで該当セクションにジャンプします。
- エクセルの表をリンクし貼り付けする
- VBAで表のデータを自動更新する
なお、今回はこちらのデータを使用して解説しています。
1. エクセルの表をリンクし貼り付けする
この方法は、ExcelのデータをPowerPointに直接リンクさせることにより、Excelファイルの更新があるたびに、PowerPointの該当データも自動的に更新されるようにするものです。下記から全体のステップをご確認ください。(クリックで該当セクションにジャンプします)
- ステップ1
- ステップ2
- ステップ3
Excelで表をコピー
まず、Excelファイル上でPowerPointに貼り付けたいデータを選択し、Ctrl + C でコピーします。
PowerPointにワークシートオブジェクトとして貼り付け
PowerPointで対象のスライドに移動し、Ctrl + Alt + V から[形式を指定して貼り付け]を実行します。次に、表示されたオプションから[リンク貼付け]を選び、[Microsoft Excel ワークシート (コード) オブジェクト]を選択して貼り付けます。
データの更新確認
Excelファイルのデータを変更し、PowerPoint内で自動更新が行われていることを確認します。
以上が、エクセルの表をリンクし貼り付けする方法のご紹介になります。こちらの方法では下記のようなメリットとデメリットがありますのでご使用の際には注意してください。
パワポの標準機能を使用したリンク貼付けはお手軽ではあるものの、デメリットも多いため、次のVBAを使用した方法がおすすめです。
2. VBAで表のデータを自動更新する
Excel VBAを使用して、PowerPoint内の特定の表データを自動的に更新する方法は、より高度な制御が可能となります。下記から全体のステップをご確認ください。(クリックで該当セクションにジャンプします)
- ステップ1
- ステップ2
- ステップ3
- ステップ4
- ステップ5
パワポ上で表の用意
まずはじめに、パワポ上でフォーマッティングなどを完了させた表を用意します。行・列の項目名などは事前に設定しておくと好みのフォーマットを適用しやすくなります。今回はパワポ上でのテンプレートの書式を選択しています。
エクセルのビジュアルディタ上でパワポ参照設定の追加
Excel上でAlt + F11キーでビジュアルエディタを開き、同画面上の[ツール]→[参照設定]を開きます。
そして、表示された画面を下にスクロールしていき、[Microsoft PowerPoint XX Object Library]を選択し、チェックボックスがマークされている状態に設定してください。
VBAコードの貼り付け
次に、ビジュアルエディタから下記のコードを貼り付けてください。
Sub UpdateChartData()
' Written by consulting-campus.site
'
'
'
Dim ws As Worksheet
Dim tbl As Range
Dim strTargetShape As String, strTargetAddress As String
Dim ppApp As Object, ppPres As Object, ppSlide As Object, ppShape As Object
Dim intSlideNumber As Integer, intTargetRow As Integer, intTargetCol As Integer
Set ws = ActiveCell.Worksheet
' ご自身で入力してください
Set tbl = ws.Range([エクセル内のセル範囲]) ' 入力してください
intSlideNumber = [スライド番号(整数)] ' 入力してください
strTargetShape = [PPT内のテーブル名] ' 入力してください
strTargetAddress = [PPT内でのテーブルの貼り付け開始セル位置] ' 入力してください
' PowerPointアプリケーションを開始または取得
On Error Resume Next
Set ppApp = GetObject(, "PowerPoint.Application")
If ppApp Is Nothing Then Set ppApp = CreateObject("PowerPoint.Application")
On Error GoTo 0
Set ppPres = ppApp.ActivePresentation
Set ppSlide = ppPres.Slides(intSlideNumber)
' スライド内のオブジェクトをループ
For Each ppShape In ppSlide.Shapes
If ppShape.Name = strTargetShape Then
' テーブルの場合
If ppShape.Type = msoTable Then
ppSlide.Select
intTargetRow = CLng(Mid(strTargetAddress, 2)) ' 行番号
intTargetCol = Columns(Left(strTargetAddress, 1)).Column ' 列番号
' 表示されているセルのみをコピー
tbl.SpecialCells(xlCellTypeVisible).Copy
' テーブルの特定のセルに値を貼り付け
ppShape.Table.Cell(intTargetRow, intTargetCol).Select
ppApp.CommandBars.ExecuteMso ("Paste")
End If
Exit For
End If
Next
' オブジェクトの解放
Set ppApp = Nothing
Set ppPres = Nothing
Set excelRange = Nothing
Set tbl = Nothing
Set ws = Nothing
MsgBox ("Done")
End Sub
なお、ExcelでVBAを扱う方法については下記の記事で詳細に解説しています。
コードの修正
コードの下記部分について、ご自身で任意の値を入力してください。
' ご自身で入力してください
Set tbl = ws.Range([エクセル内のセル範囲]) ' 入力してください
intSlideNumber = [スライド番号(整数)] ' 入力してください
strTargetShape = [PPT内のテーブル名] ' 入力してください
strTargetAddress = [PPT内でのテーブルの貼り付け開始セル位置] ' 入力してください
- [エクセル内のセル範囲]: エクセル内での対象のデータが存在するデータ範囲を入力します。(例:
B2:D8
) - [スライド番号(整数)]: パワポ上でデータを入力・更新したいスライド番号を入力します。
- [PPT内のテーブル名]: Alt + F10で選択タブを表示し、オブジェクト名を入力します。なお、日本で表示される場合はアルファベットと記号のみの名前に変更してください。
- [PPT内でのテーブルの貼り付け開始セル位置]: パワポ上での表のうち、貼付けを開始するセルの位置を指定してください。左上のセルをA1とし、通常のエクセルと同様の形式で入力します。(例:
B2
)
マクロの実行
設定を完了したら、このマクロを実行します。owerPointの該当スライドを開き、表が正しく更新されていることを確認します。
以上が、VBAで表のデータを自動更新する方法のご紹介になります。こちらの方法では下記のようなメリットとデメリットがあり、問題なく使用できる場合はこちらがおすすめです。
おわりに
以上が、エクセル (Excel)に存在するテーブル・表のデータをパワーポイントに貼り付ける形で流し込み、以降自動で更新する方法のご紹介となります。
ご質問やご不明点などがありましたらお気軽にコメントお待ちしております。
ご精読いただきありがとうございました。
コメント