• 締切済み

ExcelからPPTを操作する際のコピペオプション

はじめまして。 現在VBAにて、ExcelからPPTを操作するマクロの改修を行っています。 内容としては、Excelにて指定された既存のスライドを新規PowerPointへコピーするといったものです。 VBAのコードで「~slides(n).Copy」とコピー元を指定し「~slides.Paste」で貼付を行い、スライド自体はコピーされたのですが、コピー元のテンプレートが反映されずに困っています。(例えば会社名などが含まれているヘッダーなど) slides.pasteのオプションを調べても、貼付位置の指定「slides.paste 1」のような物しか見つけられませんでした。 実際のPowerpoint上でコピーペーストする際には、右クリックのメニューに(元の情報を保持)のようなものがあったので、不可能ではないと思うのですが… 元のテンプレートを保持しつつコピーを行う方法を教えていただけないでしょうか。

みんなの回答

回答No.1

こんにちは。 > 元のテンプレートを保持しつつコピーを行う方法を教えていただけないでしょうか。 一発で実現する方法は、私は存じあげませんが、、、。 > .. スライド自体はコピーされたのですが、コピー元のテンプレートが反映されずに困っています。(例えば会社名などが含まれているヘッダーなど) 「テンプレート」の指す意味にもよるでしょうから、 どこまで必要か解りませんが、部分的な直接解として以下。  slideObj.Copy  slidesCollection.Paste index までの処理は、ご説明の通りにできているとして、その後の処理として、 .Design プロパティとか.CustomLayout プロパティの受け渡しを 追加してみては如何でしょう? 新しく作成されたSlideオブジェクト.Design = コピー元Slideオブジェクト.Design とか、 新しく作成されたSlideRangeオブジェクト.Design = コピー元Slideオブジェクト.Design とか、 新しく作成されたSlideオブジェクト.CustomLayout = コピー元Slideオブジェクト.CustomLayout とか、 新しく作成されたSlideRangeオブジェクト.CustomLayout = コピー元Slideオブジェクト.CustomLayout 等の要領で、、、。 参考までにサンプルです。各オブジェクトの参照については、 そちらでの実際の必要に合わせて書き換えるなど、してください。 差し当たり、開いているプレゼンテーション(スライド有)があれば試せます。 ' ' // Excel VBA から ' ' // 現在開いているプレゼンテーションの スライド1のコピーを ' ' // 新たに追加するプレゼンテーションに 貼り付ける 例 ' ' // .CustomLayout プロパティの受け渡し(SlideRange ← Slide の例) Sub ReW9178651() Dim pptApp As Object ' As PowerPoint.Application   Set pptApp = GetObject(, "PowerPoint.Application") Dim pptSildeCopySource As Object ' As PowerPoint.Slide   Set pptSildeCopySource = pptApp.ActivePresentation.Slides(1)   pptSildeCopySource.Copy Dim pptNewPresentation As Object ' As PowerPoint.Presentation   Set pptNewPresentation = pptApp.Presentations.Add   pptNewPresentation.Slides.Paste(1).Design = pptSildeCopySource.Design '  pptNewPresentation.Slides.Paste(1).CustomLayout = pptSildeCopySource.CustomLayout End Sub ' ' // 纏めてコピーする場合の参考ページ。 「インストラクターのネタ帳>他のファイルからスライドをコピーするPowerPointマクロ」 http://www.relief.jp/itnote/archives/powerpoint-vba-copy-slides-from-other-file.php 「インストラクターのネタ帳>スライドをコピーして新規プレゼンテーションファイルを作成するサンプルマクロ」 http://www.relief.jp/itnote/archives/powerpoint-macro-create-new-presentation-reusing-slides.php

関連するQ&A

  • ExcelVBAでのPPT操作ついて

    表題の件、質問します。 困っている事が4点あります。 1.PowerPointへ挿入したテキストのサイズを変更したい 2.PowerPointへ挿入したテキストのフォントを変更したい 3.PowerPointへ挿入したグラフのサイズを変更したい 4.powerpointを名前を付けて、指定の場所へ保存 以上、宜しくお願いします。 参考にコードを記述します。 Sub test() Dim app As PowerPoint.Application Dim pre As PowerPoint.presentation Set app = CreateObject("powerpoint.application") app.Visible = True Set pre = app.Presentations(1) app.Presentations(1).Slides(1).Shapes.AddTextbox(msoTextOrientationHorizontal _ , 100, 100, 200, 50).TextFrame.TextRange.Text = "図1" '↑ここで作成したテキストのサイズを変更 '↑ここで作成したテキストのフォントを変更(例:MS 明朝)     Worksheets("グラフ").Shapes(1).CopyPicture pre.Slides(1).Shapes.Paste pre.Slides(1).Shapes(1).Left = 180 pre.Slides(1).Shapes(1).Top = 150 '↑ここで挿入したグラフのサイズを変更(例:縦横50%へ) '最後に、名前を付けて指定の場所へ保存 End Sub ※マクロ起動条件:  1.excelに"グラフ"のsheetがある事  2.sheet内にグラフがある事  3.powerpointを開いていること(スライドが1枚ある事)

  • Excel VBAでpptのアクティブスライド

    Excel VBAで、pptのスライドショー実行中のアクティブスライド番号を取得するコードを教えてください。 編集中のスライド番号を取得する方法は、検索して探し出したのですが、 スライドショー実行中での方法がわかりません。 Excelのセルにある値を、pptのテキストボックスに代入するプログラムを作成したいので、pptのVBAではなく、ExcelのVBAで実現させたいです。

  • VBAでPPTからEXCELにデータをコピー

    こんにちは、ANIMと申します。 EXCELのVBAで下記を実現したいのですが、方法がわかりません。 ご存知の方、どうかご支援よろしくお願いします。 ・POWERPOINTの表のデータをEXCELのセルに貼り付けたい。 ⇒表のデータを手作業でコピーして、EXCELに貼り付ければよいのですが、   PPTのファイルが大量にありVBAで対応したいです。 ・POWERPOINTの表のデータをEXCEL VBAで取り込む方法がわかりません。  (TEXTのデータではなく、表の中のデータの取り込み方です) ・POWERPOINTの表の形式は同じ(例えば、3行5列の表)です。

  • Excelでコピペのとき2つのオプションを適用?

    Excel2016を使用しています。 Excelでコピー&ペーストをする場合、ペースト先では貼り付けの オプションを選べますが、2つのオプションは同時には選べますか? 要するに1.元の列幅を保持、 2.リンク貼り付け、を同時に適用 するにはどうすればいいのでしょうか?

  • ExcelデータをPPTの指定したテキストボックスに自動エクスポートも

    ExcelデータをPPTの指定したテキストボックスに自動エクスポートもしくはインポートしたい 1列が1レコードになっているExcelデータを、 1レコード=1スライドで、 指定したセルデータをPPTの指定したテキストボックスに入れて Excelのレコード数だけスライドが自動でできるようにしたいのですが 何か方法はありますか。 VBAは初心者ですよろしくお願いします。 例 <Excel>   A   B   C    1 田中 神奈川  A型  2 山田 東京 B型   ・   ・   ・ <PPT> スライド1  テキストボックス1 に「田中」と表示  テキストボックス2 に「神奈川」と表示  テキストボックス3 に「A型」と表示  スライド2  テキストボックス1 に「山田」と表示  テキストボックス2 に「東京」と表示  テキストボックス3 に「B型」と表示  ・  ・  ・

  • エクセルのマクロでPPTにグラフを作成する

    VBAにあまり詳しくないので教えてください。使用環境は、エクセル、PPTともに2010です。 エクセルでマクロを組んで、エクセルに複数あるデータテーブルをもとに、PPT上で順にグラフを作成しようと思っています。(エクセルでグラフを作成するのではありません) PPTでグラフを挿入して、エクセルのデータをPPT内のグラフ用エクセルに貼り付けるところまではすべてマクロでくめているのですが、 どうしても貼り付けたデータがグラフに反映されず、グラフの見た目はデフォルトのままです。(データはちゃんと貼り付いているのに…) ステップインで進めると更新されるのですが、流すとうまく更新されません。 時間の問題かと思い、数秒待ってから次のステップに行くように組んでも、やはり更新されません。 一度作成した後、もう一度そのグラフのデータエクセルを開くと、データに変更はないのに、なぜかグラフが更新されます。 どなたかお知恵をお貸しください。よろしくお願いいたします。 ---以下、プロフラムの流れ--- 1)データの元となるエクセルの、A列の色つきセルでグラフの形を決める  ↓ 2)開いているPPTにスライドを追加する  ↓ 3)1で判別したグラフの形を挿入する。この時自動的にPPT内のグラフのデータエクセルが開く。  ↓ 4)1の色つきセルに続くデータテーブルをコピーする  ↓ 5)3のPPT内のグラフ内のデータエクセルに貼り付け、データ範囲をリサイズする  ↓ 6)5のファイルを閉じる。  ※本当はここでグラフも更新されるはず!!  ↓ 7)クリップボードを空にする  ↓ 8)1に戻って次のデータテーブルに移る。

  • エクセルシートのPPTへの挿入...おしえて。

    すみません。どうしてもうまく行かないもので。(^_^;)? 日頃、細かい編集が楽なのでいろいろなプレゼンテーションのシートをエクセルで作っています。図の貼り付けや文字ベタガキも混在しています。 たまたま事情があって、それをPPT(=パワーポイント)に落とし込まなくてはいけなくなりました。 --- ○ 指定のエクセルファイルの指定シートを開いた状態で保存。 ○ PPTを開いて[挿入][オブジェクト]からエクセルファイルを指定します。 すると、欲しい1シートがまるごと入ってこなくて、部分的にしかインポートされません。全体の2/3ぐらいだけです。 元のエクセルシートには[ページ設定]としては100%~60%までいろいろあります。その設定をあえて100%に戻してみましたが状態は変わりません。 しかたなく[挿入]は使わないで、ふつうにコピー&ペーストもしてみましたが変わりませんでした。部分的です。 唯一成功したのは、新しくエクセルシートをつくって、[ページ設定]も100%としたダミーデータを作って[挿入]..をしてみたら全部入りました。ただ最初の1回だけで、その後元データを少々編集していたら、またいつものとおりになってしまいました。2/3ぐらいしか入ってきません。(+_+) 何かヒントはありますでしょうか?

  • Power Pointスライドのコピーについて

    Power Point2007の配色についての質問です。 新規作成でデザインテンプレートと配色を設定したパワーポイントのスライドがあります。(AAA.ppt) そのスライドに以前作成したスライド(BBB.ppt)をコピーして、AAA.pptに挿入すると以前のスライド(BBB.ppt)の配色がクリアされて、AAA.pptの配色が摘要されます。 新しい配色を摘要せずに、以前のスライドデザインのままコピー/貼付する方法はないでしょうか?

  • EXCEL 指定のフォルダ内にあるエクセルをコピー

    どなたかVBAの記述(コード)を教えて下さい。 指定のフォルダ内にあるエクセル(コピー元)を開きコピー、データを順次、指定のエクセル(コピー先)のシートの上から順番に貼付していきたいのです。コピー貼付が終わったら、コピー元のファイルは別のコピー済のフォルダへ移したいです。 フォルダ名は、自分で指定できますが、コピー元のエクセルのファイル名とシート名は一定ではありません。(コピー元ファイルはシート1枚のみ)。セル範囲は、A~F列、行は毎回変動するので、一番下の行を判定する必要があります。 コピー先のファイルは、指定のシート(※)に上から順番に貼り付けをしたいです。 (※セルに入力して指定したいです。) 不足事項などがありましたら、ご指摘いただけると助かります。 よろしくお願いいたします。 なお、簡単な関数のVBAは理解して使えるのですが(IF~ End If、For ~Next 等)、 イベントのプロシージャーなどが今だ理解できず、自分では書くことができません。 そのため。多少コードが長くなってもいいので、イベント・プロシージャーをなるべく使わない書き方のほうが自分で修正することができ、助かります(イベントを使わないと難しい処理でしょうか・・・)。

  • エクセルVBAでコピーすると行の高さが低くなる

    いつもお世話になってます。 エクセル2003のVBAで、セルの範囲を指定してコピーすると行の高さが低くなってしまいます。その他の書式は、変化せずうまくコピーできています。以下がプログラムです。 Sub copy_hyou() Worksheets("sheet1").Activate Range("A1:K24").Copy 'セルA1からK24をコピーします。 Range("A25").Select 'A25からペイストします。 ActiveSheet.Paste End Sub どう直せば、行の高さもコピーできるでしょうか? お休み中すみませんがよろしくお願いいたします。

専門家に質問してみよう