目次
【1. はじめに:その「魔法のような自動生成」、あなたのPCで再現できましたか?】
最近、SNSや動画サイトで「AIがスライドを全自動で作る!」という華やかな動画を見かけませんか?
しかし、いざ自分で試そうとすると、多くの人が「3つの壁」にぶつかり、挫折してしまいます。
1.環境の壁:「Pythonの導入?APIキーの取得?難しくて分からない……」
2.費用の壁:「便利なツールだけど、毎月のサブスク料金は会社が許可してくれない」
3.再現性の壁:「動画の通りにやったのに、エラーが出て動かない」
結局、AIに作らせた構成案を、手作業でPowerPointにコピペする「地味な作業」に戻ってしまう。
これでは、何のためにAIを使っているのか分かりません。
本記事で紹介するのは、そんな「見せかけの魔法」ではありません。
あなたの会社のPCで、今日から確実に動く「実務のための自動化」です。
■ 競合の手法と何が違うのか?
・ Python不要、API不要:使うのは「PowerPoint」と「ブラウザ」だけ。怪しいツールのインストールも一切不要です。
・ 100%の再現性:AIに毎回プログラムを書かせる不安定な方法ではなく、「検証済みの固定プログラム(VBA)」を使います。いつ、誰がやっても同じ結果が出ます。
・ 会社のテンプレに対応:デザインが勝手に崩れるAIツールと違い、普段使っている会社の「スライドマスター」へ綺麗に文字を流し込めます。
「AI(考える)」→「VBA(配置する)」→「Designer(彩る)」。
この黄金のリレーを使えば、1時間かかっていた転記作業が、クリック1つで完了します。
夢のような魔法は捨てて、確実に動く「仕組み」を手に入れましょう。
■ 推奨動作環境(重要)
本記事のノウハウは、以下の環境での動作を前提としています。
1.VBA(マクロ)を動かすための環境
・ OS:Windows 10 または Windows 11
・ ソフト:Microsoft PowerPoint (デスクトップ版)
※ Mac版やWebブラウザ版ではVBAの仕様が異なるため、本記事のコードは動作しません。
2.「自動デザイン(仕上げ)」を使うための環境
・ ソフト:Microsoft 365 (サブスクリプション版) または Office 2021以降
※ Office 2016 / 2019 などの「買い切り版」には、最後に使用する「デザイナー」機能が含まれていません。その場合は「テーマ」機能での代用となります。
【2. 実践チュートリアル:5分で終わる自動生成体験】
では、実際に手を動かしてみましょう。
難しい理論は後回しにして、まずは「自分のPCでスライドが勝手に出来上がる」体験をしてください。
手順1:開発タブを表示する(最初の1回だけ)
VBAを使うための「開発」タブは、初期状態では隠れています。
PowerPointの「ファイル」メニューから「オプション」をクリック。
「リボンのユーザー設定」を選択。
右側のリストにある「開発」にチェックを入れて「OK」を押します。
これで画面上部のリボンに「開発」というタブが増えていることを確認してください。

手順2:VBAの「器」を作る
ここに、魔法の呪文(コード)を貼り付けます。
1.「開発」タブにある 「Visual Basic」 ボタンを押します。(灰色の画面が開きます)
2.画面上部のメニュー「挿入」から 「標準モジュール」 をクリックします。(白い入力画面が開きます)

手順3:コードをコピペする
開いた白い画面に、以下のコードをすべてコピーして貼り付けてください。
これは、Geminiのテキストを読み込み、スライドへ流し込み、さらに文字サイズを自動調整する機能まで搭載した「完全版」コードです。
Option Explicit
Sub GenerateSlides_Ver4_MultiLine()
' ==========================================================
' Ver.4.0: 自然な箇条書き対応版 (Multi-Line Parser)
' ----------------------------------------------------------
' ・「|」がある行 → 新しいスライドを作成
' ・「|」がない行 → 直前のスライドの本文に「追記」する
' これにより、Geminiの自然な改行出力がそのまま使えるようになります
' ==========================================================
Const DEFAULT_LAYOUT_INDEX As Long = 2
Const FALLBACK_LAYOUT_INDEX As Long = 11
Dim rawData As String
Dim DataObj As Object
Dim lines As Variant
Dim i As Long
Dim useClipboard As Boolean: useClipboard = True
Dim pptSlide As Slide
Dim pptLayout As CustomLayout
Dim currentBodyShape As Shape ' 現在書き込み中の本文ボックスを記憶
rawData = ""
' 1. データ取得(ハイブリッド)
On Error Resume Next
Set DataObj = CreateObject("New.DataObject")
If Err.Number = 0 Then
DataObj.GetFromClipboard
rawData = DataObj.GetText
End If
On Error GoTo 0
If Len(rawData) = 0 Then
useClipboard = False
On Error Resume Next
If ActivePresentation.Slides.Count >= 1 Then
rawData = ActivePresentation.Slides(1).NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text
End If
On Error GoTo 0
End If
If Len(rawData) = 0 Then
MsgBox "テキストが見つかりません。" & vbCrLf & _
"スライド1のノート欄に貼り付けてから実行してください。", vbExclamation
Exit Sub
End If
' 改行統一
rawData = Replace(Replace(Replace(rawData, vbCr, vbCrLf), vbLf, vbCrLf), vbCrLf & vbCrLf, vbCrLf)
lines = Split(rawData, vbCrLf)
' レイアウト確保
On Error Resume Next
Set pptLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(DEFAULT_LAYOUT_INDEX)
If pptLayout Is Nothing Then Set pptLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(FALLBACK_LAYOUT_INDEX)
On Error GoTo 0
If pptLayout Is Nothing Then
MsgBox "レイアウトエラー:標準のスライドマスターを使用してください。", vbCritical
Exit Sub
End If
' === 生成ループ(ロジック変更箇所) ===
Set currentBodyShape = Nothing ' 初期化
For i = LBound(lines) To UBound(lines)
Dim lineText As String
lineText = Trim(lines(i))
If Len(lineText) = 0 Then GoTo NextLine
' パイプ「|」が含まれているか判定
If InStr(lineText, "|") > 0 Then
' --------------------------------------------------
' パイプあり = 新しいスライドの開始
' --------------------------------------------------
Dim parts As Variant
parts = Split(lineText, "|")
' 新規スライド追加(.AddSlideを使用)
Set pptSlide = ActivePresentation.Slides.AddSlide(ActivePresentation.Slides.Count + 1, pptLayout)
Set currentBodyShape = Nothing ' 本文ボックスの記憶をリセット
Dim shp As Shape
For Each shp In pptSlide.Shapes
If shp.Type = msoPlaceholder Then
Select Case shp.PlaceholderFormat.Type
' タイトル
Case 1, 3, 11, 13, 14, 15
shp.TextFrame.TextRange.Text = Trim(parts(0))
' 本文(ここを記憶する)
Case 2, 7, 10, 12
Set currentBodyShape = shp
' パイプの右側にある文字をまず入れる
If UBound(parts) >= 1 Then
Dim firstLine As String
firstLine = Trim(parts(1))
' <br>があれば改行、なければそのまま
firstLine = Replace(firstLine, "<br>", vbCrLf)
shp.TextFrame.TextRange.Text = firstLine
End If
End Select
End If
Next shp
Else
' --------------------------------------------------
' パイプなし = 直前のスライドの本文への「追記」
' --------------------------------------------------
If Not currentBodyShape Is Nothing Then
' 現在の本文に改行コード + 今の行を追記
currentBodyShape.TextFrame.TextRange.Text = _
currentBodyShape.TextFrame.TextRange.Text & vbCrLf & lineText
End If
End If
NextLine:
Next i
MsgBox "生成完了しました。" & vbCrLf & "箇条書きもすべて取り込みました。", vbInformation
End Sub貼り付けたら、その「Visual Basic」の画面は×ボタンで閉じてしまって構いません。
手順4:Geminiで原稿を作る(パイプ区切り戦略)
Geminiに、スライドの構成を作らせます。
ここで重要なのは、VBAが読み取りやすいように「パイプライン(|)」という記号で区切らせることです。
以下のプロンプトをコピーして、Geminiに入力してください。
(プロンプト例)
あなたはプロのプレゼンテーション作家です。
以下の【テーマ】に基づき、スライド構成案(5〜8枚程度)を作成してください。
【出力ルール】
1. フォーマットは必ず「スライドタイトル|本文」の形式にしてください。
2. 挨拶や「承知しました」などの前置きは一切不要です。データのみを出力してください。
3. 本文内で改行したい箇所には <br> タグを挿入してください。
4. コードブロック(```)は使用せず、プレーンテキストで出力してください。
【テーマ】
ここにプレゼンのテーマを入力(例:2026年度 新規Webマーケティング施策の提案)
Geminiが出力したテキスト(例:はじめに|VBAは怖くない、まずはコピペから)を、マウスで選択して「コピー」 しておいてください。
※ファイルに保存する必要はありません。コピーした状態にしておくことが重要です。
手順5:いよいよ自動生成!
PowerPointに戻り、「開発」タブの 「マクロ」 ボタンを押します。
GenerateSlides_Hybrid という名前があるはずなので、それを選んで 「実行」 を押してください。

「スライド生成完了!」と表示され、スライドが増えていれば大成功です!
■ もし「データを取得できません」と言われたら?
セキュリティの関係でクリップボードが読み込めない場合でも、このコードなら大丈夫です。
スライドの1枚目の下にある「ノート(発表者用メモ)」欄に、Geminiのテキストを貼り付けます。
もう一度「マクロ」→「実行」を押します。今度は動くはずです。
手順6:AI × AIで完成させる
最後に、PowerPoint標準の「デザイナー(Design Ideas)」ボタンを押してください。
(通常は「ホーム」タブの一番右側にあります)
AIがスライドの内容を解析し、画像やアイコンが配置されたプロ級のデザイン案を提示してくれます。好みのものを選ぶだけで完成です。
【3. うまくいかない場合のトラブルシューティング】
基本的にはここまでの手順で動くはずですが、会社の専用テンプレートなどを使っている場合、うまく文字が入らないことがあります。その原因と対策を解説します。
原因:テンプレートの構造が違う
今回のコードは、標準的なテンプレートの「上から2番目のレイアウト(通常は『タイトルとコンテンツ』)」を使う設定になっています。
もし、文字が入らなかったり、タイトルと本文が逆になったりする場合は、テンプレートの構造を調べる必要があります。
対策:構造調査用コードを使う
以下のコードを手順2と同じ要領で追加し、実行してみてください。スライド上の枠(プレースホルダー)の種類を教えてくれます。
Sub CheckPlaceholders()
Dim sld As Slide
Dim shp As Shape
Dim msg As String
If ActiveWindow.Selection.Type <> ppSelectionSlides Then
MsgBox "左側のサムネイルでスライドを選択してから実行してください。"
Exit Sub
End If
Set sld = ActiveWindow.Selection.SlideRange(1)
msg = "【スライド番号: " & sld.SlideIndex & " の調査結果】" & vbCrLf & vbCrLf
For Each shp In sld.Shapes
If shp.Type = msoPlaceholder Then
msg = msg & "◆ Shape名: " & shp.Name & vbCrLf & _
" └ 種類ID: " & shp.PlaceholderFormat.Type & vbCrLf
End If
Next shp
MsgBox msg
End Subこの調査結果を見て、本番用コード内の数字(CustomLayoutsの番号や、PlaceholderFormat.Typeの番号)を調整することで、どんなテンプレートにも対応可能です。
【4.スライドの質を劇的にあげる「プロンプトの魔術」】
このツールを使って「しょぼいスライド」ができるか、「プロ顔負けのスライド」ができるかは、
Geminiへの指示(プロンプト)で9割決まります。
コツは、Geminiに「役割」と「構造」を与えることです。
1.ダメなプロンプト例
「新入社員研修資料を作って」
→これだと、当たり障りのない薄いテキストが羅列されるだけです。
2.成功するプロンプト例
あなたは「人材育成のプロフェッショナル」です。
以下のテーマで、新入社員のモチベーションを高めるスライド構成(5枚)を作成してください。
制約事項
各スライドのタイトルは「体言止め」で短く、インパクト重視にする。
本文はダラダラ書かず、「結論→理由→具体例」の順で構成する。
箇条書きの改行位置には必ず(br)タグを使用し、リズムを作る。
抽象的な言葉は避け、具体的なアクションプランを含める。
出力形式
スライドタイトル|本文(brタグ含む)
これだけで、出力されるテキストの説得力が段違いになります。VBAは「優秀な配送業者」ですが、荷物の中身(コンテンツ)を作るのはGeminiへの指示次第です。
【5.このツールの正しい使いどころ(80:20の法則)】
このツールを実務で使いこなすための重要なマインドセットをお伝えします。
「100点満点の資料を作ろうとしないことです。」
間違い: グラフも画像も全部AIに任せて、手直しゼロで提出する。
正解 : 「真っ白なスライド」から「文字が埋まった8割完成のドラフト(たたき台)」までを一分で終わらせる。
【最強の時短フロー】
これまで「構成を考えて、テキストボックスを配置して、コピペして…」と1時間かかっていた
作業が、このフローなら15分で終わります。「0から1を作る苦痛」をAIに任せ、
人間は「仕上げ」に注力する。これこそが、2026年の正しいAI活用法です。
【6. 応用コラム:Gemini Canvas × VBAの最強連携術】
最近話題の「Gemini Canvas」を使うと、試行錯誤しながらリッチなスライド構成を作ることができます。
「CanvasでそのままVBAコードを出力させればいいのでは?」と思う方もいるかもしれませんが、実はそこには2つの落とし穴があります。
トークン制限でコードが途切れる
VBAコードは記述量が多いため、スライド枚数が増えると途中でコードが切れてしまい、エラーの原因になります。
毎回コードが変わってエラーが出る
AIは毎回違う書き方をするため、「昨日は動いたのに今日は動かない」という現象が多発します。
■ 正解は「Canvasで構成し、VBAで実装する」
Canvasで作った素晴らしい構成案も、今回の記事の手法(固定コード)を使えば安全に自動化できます。
このワークフローにおいて重要なポイントを2つ解説します。
ポイント1:Canvasは「放送作家」として使う
この手法を使う場合、Canvasでの作業における「デザイン(見た目)」の価値はゼロになります。
しかし、Canvasには「構成(ロジック)」を練るための最強の機能があります。
・ ブロックの並べ替え:スライドの順番を直感的に入れ替える
・ 情報の粒度調整:内容を推敲してスライドを分割・統合する
・ 全体の俯瞰:全体を見渡しながらストーリーの流れを確認する
つまり、Canvasは「デザイナー」ではなく「放送作家(構成作家)」として使うのが正解です。「ここでこのデータを見せる」「ここでオチをつける」という設計図を作ることに専念し、見た目は一切気にせず文字だけで仕上げてください。
最後に、Canvasに対して以下のように指示を出せば、VBA用のデータが入手できます。
「ここまで作成したスライド構成を、以下の形式に変換して出力してください。
形式:スライドタイトル|本文の箇条書き(読点つなぎの1文)」
ポイント2:画像は「プレースホルダー作戦」で
テキストだけ流し込んでも画像やグラフは入りません。そこで、実務的な「割り切りテクニック」を推奨します。
Canvasで構成を作る際、画像を入れたい場所には【目印】をテキストとして書いておくのです。
(Canvas上の記述例)
・上半期は昨対比120%で推移
・特に3月のキャンペーンが奏功した
【ここにExcelの売上グラフ画像を貼る】
・下半期の見通しは堅調
こうしておけば、VBA生成後のスライドにその文字が入ります。あとは人間がそれを見て、該当する画像をペタッと貼るだけです。
■ なぜこれが「最強」なのか?
Canvasでデザインまで完結させてPowerPointに持ってくる場合、会社のロゴが入っていない、フォントが違うなど、「会社指定フォーマット」からの逸脱が必ず発生します。結局、上司に「うちのフォーマットに直しておいて」と言われ、転記作業が発生します。
一方、今回のVBA手法なら、生成された瞬間から「会社の正式なフォーマット(スライドマスター)」に乗っています。
Canvasで思考を深め、VBAで会社規定の形にする。これこそが、AIの「思考力」とVBAの「安定性」をいいとこ取りする業務ハックです。
※デザインの注意点
「デザイナー機能」は、会社規定の色やフォントを守りながらデザイン案を出してくれますが、ロゴの位置やタイトルの配置などの「レイアウト」は変更される場合があります。
厳格なルールがある公式資料を作成する場合は、デザイナー機能を使わず、テンプレートの配置のまま微調整を行ってください。
【7. まとめ】
Geminiで構成し、VBAで形にし、デザイナーで彩る。
一つ一つのツールは完璧ではありませんが、こうして連携させることで、面倒な資料作成時間を劇的に短縮できます。
まずは「コピペ」から、あなたの定型業務に取り入れてみてください。
[参考記事]
Part2: NotebookLM×Geminiで「自社の勝ちパターン」を完全再現!崩れない提案書を爆速生成するVBA実務ガイド


