質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

17178閲覧

PowerPoint ファイルの結合方法

qwertyuiop12345

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2015/07/08 07:54

フォルダの中にある多数のPPTファイルについて、各PPTファイルの全てのスライドを結合して新しいPPTファイルを作成したいと考えています。

色々とWEB上で探して、下記サイトが参考にして、各ファイル1ページ目のみを結合できるようになったのですが、各ファイル全てのページを結合する方法がわからず困っております。
アドバイスいただける方がおりましたらお願いいたします。
OSは、Windows7、Officeは2010を使用しています。

■参考にしたサイト
http://oshiete.goo.ne.jp/qa/1286531.html

■現状のコード(PPTのVBAです。)
上記参考サイトのコードをOffice2010に改良しました。
VBAの初心者なので、コードについてご指摘もいただければ幸いです。
※2010で動くようにしただけで精いっぱいでした。

Sub test1()
Dim openFilePath As String
Dim fn As String
Dim f As Object
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

openFilePath = "I:\test" For Each f In FSO.GetFolder(openFilePath).Files fn = f.Name 'ファイル名の取得 With Presentations.Open(openFilePath & "\" & fn) Presentations(fn).Slides(1).Copy '←スライド1のみコピー。 Presentations(fn).Close ActiveWindow.View.Paste End With Next f Set FSO = Nothing

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こんにちは

Excelではよくやるのですが、PowerPointではやったことがなかったので試してみました。

こんな感じでいかがでしょう?

lang

1Sub test1() 2 Dim openFilePath As String 3 Dim fn As String 4 Dim f As Object 5 Dim FSO As Object 6 Set FSO = CreateObject("Scripting.FileSystemObject") 7 Dim myPtt As Presentation 8 9 'コピー先(自分)の保持 10 Set myPtt = ActivePresentation 11 12 '検索フォルダ 13 openFilePath = "I:\test" 14 15 'フォルダ内のファイルを取得 16 For Each f In FSO.GetFolder(openFilePath).Files 17 18 'ファイル名の取得 19 fn = f.Name 20 21 '拡張子 pptx で判別 22 If FSO.GetExtensionName(openFilePath & "\" & fn) = "pptx" Then 23 24 'コピー元ファイルを開く 25 Presentations.Open (openFilePath & "\" & fn) 26 27 With ActivePresentation 28 'コピー元から全スライドをコピー 29 .Slides.Range.Copy 30 'コピー元を閉じる 31 .Close 32 End With 33 34 'コピー先へ貼り付け 35 myPtt.Slides.Paste 36 37 End If 38 39 Next f 40 41 Set FSO = Nothing 42 43End Sub

With の使い方は、オブジェクトへの参照の繰り返し記述するところを省略するイメージです

上記のコードでは

ActivePresentation.Slides.Range.Copy
ActivePresentation.Close

と記述するところを

With ActivePresentation
.Slides.Range.Copy
.Close
end With

としています
この程度なら使うまでもないですけどね、、、

投稿2015/07/09 01:44

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qwertyuiop12345

2015/07/11 13:07

ありがとうございます。非常にわかりやすく参考になりました。 もっとVBAを勉強して、便利なものを作っていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問