Excel VBAでパワポの「2枚1組」スライドを一括自動作成!複数枚の雛形を連続コピーする技
「問題スライド」と「回答スライド」のように、''2枚で1セットになっているスライド''を、Excelのリストから大量生産したい。
そんな時、1枚ずつコピーしてペーストして...とやっていると、スライドの順番が崩れたり、処理が複雑になりがちです。
今回は、PowerPoint VBAで**「複数スライドをまとめて掴んでコピーする」**方法と、それを応用して**「三択クイズ」を自動生成するマクロ**を紹介します。
これさえ知っていれば、カタログ作成やテスト問題の作成が劇的に楽になります!

結論:複数スライドのコピーは 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このコードの動きや、実際にスライドが増殖していく様子は、動画のデモシーンを見るとイメージが湧きやすいです。
- [21:10](https://www.youtube.com/watch?v=-GVsj_kYbMI&t=1270s) (Excelリストからクイズスライドが爆速で生成される様子)
解説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枚目
動画では、調査段階でこの記述方法にたどり着くまでの過程も公開しています。
- [07:21](https://www.youtube.com/watch?v=-GVsj_kYbMI&t=441s) (複数スライド指定の書き方解説)
解説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頭の中で計算するとややこしい「ページ番号のズレ」については、動画内で図解しながらデバッグしています。
- [08:30](https://www.youtube.com/watch?v=-GVsj_kYbMI&t=510s) (奇数・偶数ページの計算ロジック解説)
応用:三択クイズ作成ツールへの発展
この「2枚一括コピー」の技術を使えば、
- スライド1:問題文と選択肢ボタン
- スライド2:正解発表と解説
というリッチな構成のクイズアプリも、Excelのリストだけで量産可能です。
動画の後半では、実際に「三択クイズ」を自動生成するツールへとコードを修正しています。
「単なるコピー」から「アプリ作成」へと進化する過程は、以下のタイムラインからご覧ください。
- [15:07](https://www.youtube.com/watch?v=-GVsj_kYbMI&t=907s) (三択クイズ作成への応用開始)
- [19:04](https://www.youtube.com/watch?v=-GVsj_kYbMI&t=1144s) (クイズ用プログラムへの修正ポイント)
まとめと動画リンク
今回は `Slides.Range(Array(1, 2))` を使った複数スライドの操作を紹介しました。
VBAでPowerPointを操作する際、「コレクション」や「Range」の扱いは独特でハマりやすいポイントです。
動画では、エラーが出た時の対処法や、実際のオブジェクトの動きを見ながら詳しく解説していますので、コードだけでは動かない!という方はぜひ参考にしてください。
動画本編はこちら**
関連リンク
- [Google検索:PowerPoint VBA Slides.Range Array:title]
- Ken3のYouTubeチャンネル(チャンネル登録でVBAの引き出しが増えます!)