- 締切済み
ExcelからPPTを操作する際のコピペオプション
はじめまして。 現在VBAにて、ExcelからPPTを操作するマクロの改修を行っています。 内容としては、Excelにて指定された既存のスライドを新規PowerPointへコピーするといったものです。 VBAのコードで「~slides(n).Copy」とコピー元を指定し「~slides.Paste」で貼付を行い、スライド自体はコピーされたのですが、コピー元のテンプレートが反映されずに困っています。(例えば会社名などが含まれているヘッダーなど) slides.pasteのオプションを調べても、貼付位置の指定「slides.paste 1」のような物しか見つけられませんでした。 実際のPowerpoint上でコピーペーストする際には、右クリックのメニューに(元の情報を保持)のようなものがあったので、不可能ではないと思うのですが… 元のテンプレートを保持しつつコピーを行う方法を教えていただけないでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
こんにちは。 > 元のテンプレートを保持しつつコピーを行う方法を教えていただけないでしょうか。 一発で実現する方法は、私は存じあげませんが、、、。 > .. スライド自体はコピーされたのですが、コピー元のテンプレートが反映されずに困っています。(例えば会社名などが含まれているヘッダーなど) 「テンプレート」の指す意味にもよるでしょうから、 どこまで必要か解りませんが、部分的な直接解として以下。 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