三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


AIで動画から記事 Excel VBAでパワポの「2枚1組」スライドを一括自動作成!複数枚の雛形を連続コピーする技

Excel VBAパワポの「2枚1組」スライドを一括自動作成!複数枚の雛形を連続コピーする技

「問題スライド」と「回答スライド」のように、''2枚で1セットになっているスライド''を、Excelのリストから大量生産したい。
そんな時、1枚ずつコピーしてペーストして...とやっていると、スライドの順番が崩れたり、処理が複雑になりがちです。

今回は、PowerPoint VBAで**「複数スライドをまとめて掴んでコピーする」**方法と、それを応用して**「三択クイズ」を自動生成するマクロ**を紹介します。

これさえ知っていれば、カタログ作成やテスト問題の作成が劇的に楽になります!

AIで動画から記事を作成しました

結論:複数スライドのコピーは Array を使う

まずは、動作する完成形のコードをご覧ください。
ポイントは `Slides.Range(Array(1, 2)).Copy` です。これで1枚目と2枚目を同時にクリップボードへ送れます。

Sub スライド複数コピーテスト()
    
    '【重要】Arrayを使って1ページ目と2ページ目を同時に掴んでコピー
    ' 解説動画: https://www.youtube.com/watch?v=-GVsj_kYbMI&t=441s
    ActivePresentation.Slides.Range(Array(1, 2)).Copy
    
    '新規プレゼンを作成して貼り付けテスト
    Dim ppApp As Object
    Set ppApp = CreateObject("PowerPoint.Application")
    ppApp.Visible = True
    ppApp.Presentations.Add
    
    Dim n As Integer
    '5セット連続で貼り付けるループ処理
    For n = 1 To 5
        ppApp.ActivePresentation.Slides.Paste
        '※ここにテキスト置換などの処理が入ります(後述)
    Next n

End Sub

このコードの動きや、実際にスライドが増殖していく様子は、動画のデモシーンを見るとイメージが湧きやすいです。

解説1:Slides.Range(Array(1, 2)) の仕組み

通常、スライドをコピーする時は `Slides(1).Copy` と書きますが、これだと1枚しか掴めません。
複数枚を対象にするには、引数に配列(Array)を渡す必要があります。

  • `Slides.Range(Array(1, 2))` : 1枚目と2枚目
  • `Slides.Range(Array(1, 3, 5))` : 1, 3, 5枚目

動画では、調査段階でこの記述方法にたどり着くまでの過程も公開しています。

解説2:貼り付け後のデータ流し込み(ページ番号の計算)

2枚1組で貼り付けていくと、テキストを書き込むべきスライド番号も「1, 2」「3, 4」「5, 6」...と2つずつズレていきます。
Excelの行番号 `n` を使って、PowerPointのスライド番号を計算するロジックがこちらです。

    'Excelのn行目のデータをセットする
    '奇数ページ(問題スライド)の計算: (n - 1) * 2 + 1
    nPAGE = (n - 1) * 2 + 1
    Set objSlide = oApp.ActivePresentation.Slides(nPAGE)
    objSlide.Shapes("txtQuestion").TextFrame.TextRange.Text = Cells(n, "A").Text 
    
    '偶数ページ(回答スライド)の計算: 次のページなので +1
    nPAGE = nPAGE + 1
    Set objSlide = oApp.ActivePresentation.Slides(nPAGE)
    objSlide.Shapes("txtAnswer").TextFrame.TextRange.Text = Cells(n, "B").Text

頭の中で計算するとややこしい「ページ番号のズレ」については、動画内で図解しながらデバッグしています。

応用:三択クイズ作成ツールへの発展

この「2枚一括コピー」の技術を使えば、

  • スライド1:問題文と選択肢ボタン
  • スライド2:正解発表と解説

というリッチな構成のクイズアプリも、Excelのリストだけで量産可能です。

動画の後半では、実際に「三択クイズ」を自動生成するツールへとコードを修正しています。
「単なるコピー」から「アプリ作成」へと進化する過程は、以下のタイムラインからご覧ください。

まとめと動画リンク

今回は `Slides.Range(Array(1, 2))` を使った複数スライドの操作を紹介しました。
VBAPowerPointを操作する際、「コレクション」や「Range」の扱いは独特でハマりやすいポイントです。

動画では、エラーが出た時の対処法や、実際のオブジェクトの動きを見ながら詳しく解説していますので、コードだけでは動かない!という方はぜひ参考にしてください。

動画本編はこちら**

www.youtube.com

関連リンク

質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~