こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

はじめまして。
現在VBAにて、ExcelからPPTを操作するマクロの改修を行っています。

内容としては、Excelにて指定された既存のスライドを新規PowerPointへコピーするといったものです。

VBAのコードで「~slides(n).Copy」とコピー元を指定し「~slides.Paste」で貼付を行い、スライド自体はコピーされたのですが、コピー元のテンプレートが反映されずに困っています。(例えば会社名などが含まれているヘッダーなど)

slides.pasteのオプションを調べても、貼付位置の指定「slides.paste 1」のような物しか見つけられませんでした。
実際のPowerpoint上でコピーペーストする際には、右クリックのメニューに(元の情報を保持)のようなものがあったので、不可能ではないと思うのですが…

元のテンプレートを保持しつつコピーを行う方法を教えていただけないでしょうか。

投稿日時 - 2016-05-27 10:40:31

QNo.9178651

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2016-05-27 15:48:30

あなたにオススメの質問