• ベストアンサー

【VBA】エクセルからパワポの表に値を貼り付けたい

エクセルに項目が縦に1列に並んでおり、その右隣の列に値Aがあるとします。 エクセルの項目と同じ文字列が書かれた表がパワーポイントにあり、その右側に値Aを貼り付けたいです。(表は項目が左に1列、右に値Aを入力したい列が1列ある形です。) エクセルと同じ文字列が入っている表があれば、その表の右側に値を代入するといった条件式をVBAで作成することは可能でしょうか。 エクセルのマクロはよく使っているのですが、パワポは全く分かりません。 実現可能かも含めご教示いただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5640)
回答No.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

yu12vba
質問者

お礼

ありがとうございます! 使用させていただきます!

その他の回答 (1)

  • sknbsknb2
  • ベストアンサー率38% (1125/2899)
回答No.1

一応できないことはないと思います。方法については下記を参照してください。 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でやるしかないと思いますが。

関連するQ&A

  • エクセル VBA

    エクセルVBAで以下のようなデータがあります。 D列の文字列と右隣のE列の文字列の2つが入っているものをA列から探し、見つかったセルの上にセルを追加し、E列の右隣のF列に入っている文字列を代入したいです。 どのようなプログラムになりますか?

  • エクセルでの値の自動代入

    エクセルでワークシートのセルからでもユーザーフォームからでもいいのですが、違うワークシート上の表(列が項目、行が日付)の当日日付のセルにマクロで作ったボタンを押すと値が挿入されるような方法はありますか? アクセスで値の代入のようにできればいいのですが。 マクロでもVBAでもいいのですが、できる方法はあるでしょうか?

  • 完全一致したら代入するマクロを教えてください

    エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣に後者のセルの右隣の文字列を代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。よろしくお願い申し上げます。

  • 完全一致したら複数のセル代入するマクロは?

    エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣から3番目までのセルに、後者のセルの右隣から3番目までの文字列を順に代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。複数のセルに順に代入するのに苦慮しています。よろしくお願い申し上げます。

  • エクセルの表をコピーして、パワポに貼り付ける場合

    エクセルの表をコピーして、パワポに貼り付ける場合 なぜか一部のセルだけが、文字の配置が上になっています。 エクセル上では全て、文字の配置は中央にしてるのです。 エクセルでの表は4×5の表ですが、 そのうちの2つだけがパワポに貼り付けると、上に上がってしまいます。 なぜでしょうか?

  • VBAで表の集計方法(値の出力方法)について

    まだVBA初心者です。 とっても曖昧な質問なんですが、今会社で莫大なデータベース?(表:Excel)から特定条件の値を抜き取り、違うシートに表を作るマクロを作ってます。 ただ、値を抜き取ると言っても、1行目のD列が"1"だった場合は1行目のG列の値と2行目のG列の文字列をくっつけて別シートの一つのセルに入れたり…D列の値が"2"だったらG列の二つ下の文字列とくっつけて、他にもB列の日付が今日より過去だったら…みたいな条件が30以上あるんです。 そして元々の表が列数が70弱、行数は4000を超えています。 元々の表(表1)の1行目から条件を特定していき、条件が合えば移してまたその下の行を…とやっていこうと思ってます。 特定条件で抜き取るマクロはなんとか書けそうなんですが、そもそも元の表(表1)から別シートの表(表2)へ値を移す方法がどうしたらいいのかわからず質問しました。 移す方法と言うのは、例えば、元々の表(表1)のA1、C1、E1を別シートに移すとして、移す値が少なければ、A1、C1、E1をコピーして別シートにペーストすればいいんでしょうけど、あまりにも移す値が多い(1行で25の値)ので、マクロ上で条件に合う値を一度変数に全部入れて別シートにValueで入れたほうが早いですよね?それとも2つのシート間で条件に合った値のコピペを繰り返した方がよいのでしょうか?CPUやメモリの量にもよるんでしょうが、どっちの方が負担がすくなく、サクッっと行くのか知りたいです。 どう説明していいのか分からず、意味がわからないかもしれませんがよろしくお願いします。

  • エクセル VBA で他の表のリストを紐付けたい

    エクセル VBA で他の表のリストを紐付けるには、 どのような、コードを記入すればよろしいでしょうか? A1にBAA、A6にCAA、A11にEAAという項目があります。(図 マクロ実行前参照) 項目の下の数字を検索値として、リスト(別ワークブック)の C列とD列の値を紐付けしたいのですが、 その場合どのようなコードを記入すればよろしいでしょうか? ※リスト(別ワークブック)はBAA、CAA、EAAの3項目が全て混ざった形のため  その項目を自動認識して、数字の検索値で紐付けする事は可能でしょうか? よろしくお願い致します。

  • Excel VBAでの値の比較

    お世話になります。 Excel VBAでの値の比較方法についてご教授頂きたく存じます。 下記のような値がセルに入っていると仮定しまして、 セルA1とセルG1を比較する セルA2とセルG2を比較する セルB1とセルH1を比較する セルB2とセルH2を比較する 値が違う場合のみ、A列、又は、B列のセルの色を変更したいのですが・・・。 下記例の場合であれば、B1とA2がセルの色が変われば良いです。    A列 B列    G列 H列 1行  1  1     1   2 2行  2  2     3   2 VBAで実現したいと思います。 何卒、宜しくお願い申し上げます。

  • 【エクセル】歯抜けの空白欄に上段と同じ値を入れたい

    エクセル(2010)で ある表に ところどころ空欄があり、 そこに上段と同じ値を入れたいです。 随時発生する作業のため マクロ(もしくはVBA)が組めればと考えておりますが、 初心者につき、ご教示いただけますでしょうか。 A列:項番 B列:大項目 C列:中項目 D列:小項目 E列:備考 ※1行目:項目名、2行目以降:値 という表で、 A列のナンバリング・D列の小項目 以外は 上と同じ扱いとなるため空欄となってしまっていますが、 アクセス(DB)に取り込むため、空欄の無い形にしたいのです。 ※ちなみに、A列・D列は空欄が無い状態=最終行以下は空白です。 よろしくお願い致します。

  • エクセル 表から指定した値を取り出す関数

    エクセルの関数について教えてください。 エクセルの表があって、そこの列項目と行項目を指定した時に クロスするセルの値を取り出すことをしたいのですが、 どのような関数を用いれば実現できるのでしょうか? 具体的には以下のような表をエクセル上に書いてあるとします。    国語 算数 英語 田中 80 70 60 鈴木 50 90 80 で、任意のセルに田中の国語の点数を示そうとした時、 どのような関数を書けばいいのでしょうか? わかりにくい説明かもしれませんが、宜しくお願いします。

専門家に質問してみよう