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

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

ただいまの
回答率

90.61%

  • VBA

    1728questions

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

PowerPoint ファイルの結合方法

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 5,319
フォルダの中にある多数の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
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+1

こんにちは

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

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

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

    'コピー先(自分)の保持
    Set myPtt = ActivePresentation

    '検索フォルダ
    openFilePath = "I:\test"

    'フォルダ内のファイルを取得
    For Each f In FSO.GetFolder(openFilePath).Files

      'ファイル名の取得
      fn = f.Name

      '拡張子 pptx で判別
      If FSO.GetExtensionName(openFilePath & "\" & fn) = "pptx" Then

        'コピー元ファイルを開く
        Presentations.Open (openFilePath & "\" & fn)

        With ActivePresentation
          'コピー元から全スライドをコピー
          .Slides.Range.Copy
          'コピー元を閉じる
          .Close
        End With

        'コピー先へ貼り付け
        myPtt.Slides.Paste

      End If

    Next f

    Set FSO = Nothing

End Sub

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

上記のコードでは

ActivePresentation.Slides.Range.Copy
ActivePresentation.Close

と記述するところを

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/11 22:07

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

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    VBA google画像検索 画像表示

    エクセルのVBAで文字列に対する画像が表示されるマクロを作成したいです。 やりたいこととして例えば、 A列に5つワードが書かれており、 そのワードをひとつずつgoogleで画像検

  • 解決済

    ADODB.Stream 保存時エラー

    ADODB.Streamでファイルを作成していてSaveToFileで保存する際に、 ’アプリケーション定義またはオブジェクト定義のエラーです’とエラーが発生します。 変数SA

  • 解決済

    エクセルのVBAの動作の高速化について

    エクセルのVBAの高速化を行いたいと思い質問させていただきます。 現在、きまった形のデータを作成するために、コピーandペースト作業時のミスをなくすためエクセルとVBAを使い

  • 解決済

    VBA高速化について

    20個のエクセルファイルを読み込み、特定のシートにあるテーブルから特定の値を探し出し、その右横にあるセルの値を取り出します。 集計用のエクセルのテーブルでも、同じ特定の値をテーブル

  • 解決済

    powerpointでタイトル(文字列+連続変数)をVBAで一括変換

    パワーポイントで、タイトルの位置に テキスト+数字 の形でFor文を使って作りたいです。 例)こんにちは1(スライド1枚目) こんにちは2(スライド2枚目) ...といった形です。

  • 解決済

    VBA コード簡略化 下記処理の場合

    お疲れ様です。 私が実装したVBAコードに下記実装があります。 それぞれフォームからのボタン押下で流れる作りになっています。 '**********************

  • 解決済

    VBA Dictionary 取り出し方にて質問

    VBAにて下記実装を行いました。 Dim dictionary As Variant Set dictionary = CreateObject("Scripting.Dict

  • 解決済

    VBAで特定の語を含む複数のファイルのうち更新日付が一番新しいファイルを取得したい

    VBAでプログラムを組んでいます。 背景 はじめDir関数で特定の語のファイルをピックアップしていたのですが、 "日本"を含むファイルが複数出てくるとその中で最新の物を取得する

同じタグがついた質問を見る

  • VBA

    1728questions

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