- ベストアンサー
【VBA】エクセルからパワポの表に値を貼り付けたい
エクセルに項目が縦に1列に並んでおり、その右隣の列に値Aがあるとします。 エクセルの項目と同じ文字列が書かれた表がパワーポイントにあり、その右側に値Aを貼り付けたいです。(表は項目が左に1列、右に値Aを入力したい列が1列ある形です。) エクセルと同じ文字列が入っている表があれば、その表の右側に値を代入するといった条件式をVBAで作成することは可能でしょうか。 エクセルのマクロはよく使っているのですが、パワポは全く分かりません。 実現可能かも含めご教示いただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私も回答No.1と同じでパワーポイントの便利機能を使った方がいいように思いますが、とても興味があったので作ってみました。 参照設定に「Microsoft PowerPoint XX.X Object Library」を追加してください。 Dim vApp As PowerPoint.Application Set vApp = New PowerPoint.Application Dim vPre As PowerPoint.Presentation Set vPre = vApp.Presentations.Open("PowerPointファイルパス") Dim vSlide As PowerPoint.Slide Set vSlide = vPre.Slides("PowerPointスライド名") Dim vShape As PowerPoint.Shape Set vShape = vSlide.Shapes("PowerPoint表名") Dim vRow As PowerPoint.Row Dim vSheet As Worksheet Set vSheet = ThisWorkbook.Worksheets("Excelシート名") Dim vRowIndex As Integer For vRowIndex = 1 To 5'Excel表の開始行から終了行まで For Each vRow In vShape.Table.Rows If vRow.Cells.Item(1).Shape.TextFrame.TextRange.Text = vSheet.Cells(vRowIndex, 1).Text Then'Cellsの1はExcel表の左列 vRow.Cells.Item(2).Shape.TextFrame.TextRange.Text = vSheet.Cells(vRowIndex, 2).Text'Cellsの2はExcel表の右列 Exit For End If Next Next vPre.Save vPre.Close vApp.Quit
その他の回答 (1)
- sknbsknb2
- ベストアンサー率38% (1158/3032)
一応できないことはないと思います。方法については下記を参照してください。 https://officeforest.org/wp/2018/04/22/vba%E3%81%A7%E4%BB%96%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B/ ただ、実現するためには結構なパワーが必要になると思いますので、別の方法を探すのが現実的ではないでしょうか。 例えばExcelで作った表をコピーして、PowerPointに埋め込みで貼り付けると、PowerPoint上でExcelの機能が使えるイメージとなります。この状態ならPowerPoint上の表でvlookupとか使えるようになるのですが、そういう方法ではダメなのでしょうか? Excelの表を修正すると自動的にPowerPointの表が修正されるというようなことがしたい場合はVBAでやるしかないと思いますが。
お礼
ありがとうございます! 使用させていただきます!