ChatGPT×PowerPointで爆速で画像を作る方法

eyecatch46662

コトゼニ
コトゼニ

PowerPointで画像を作っているだけど、地味に手間なんだよな…

というように感じている方はいらっしゃらないでしょうか?

当ブログでは

  • SEO対策の一つとしてオリジナルな画像を利用した方が良いと聞いたことがある
  • 読者もそこまでじっくり段落を読まない

ということを踏まえ、

記事の見出しのすぐ下に挟む画像もなるべく、その段落のまとめを画像にするようにしています。

コトゼニ
コトゼニ

こんな感じです

eyecatch-4554-img1v2

ただ、このような画像を作るのは地味に手間なんです。

コトゼニ
コトゼニ

新しいスライドにコピーして、テキストボックスの文言を変えて、JPEGで出力して…

ひとつひとつはそれほど大きな作業では無いのですが、枚数が重なると地味に手間だと感じるように…。

これらの手間を省くために、PowerPointにVBAを搭載してマクロで処理時間を短縮させたいと思い、ChatGPT×PowerPointで爆速で画像を作る方法を考えました。

この記事では、完成した2つのマクロを紹介します!

ChatGPTに狙い通りの回答をもらうためのプロンプトの参考になれば嬉しいです!

ぜひ最後までお読みください!

▶︎こちらの記事ではChatGPTを使ってWebアプリケーションを作成した話を紹介しています。

iqatlogo2【ChatGPTと開発】高校「情報1」一問一答アプリ

もともと手作業で行っていた処理手順

もともとは

  1. 新しいスライドを作る
  2. 前回作ったスライドをコピーする
  3. 新しいスライドのテキストボックスの中の文言を修正する
  4. 作成したスライドをJPEG形式でエクスポートする
  5. ファイルサイズが大きければリサイズする

といったことを行なっていました。早ければ2〜3分で終わりますが、ときには5分ほどかかったり…段落ごとに作っていると気持ち的には負担が増えてきますよね。

そこで

  • テンプレートに指定したスライドのコピーを作成しテキストボックスの文言を変えられるマクロ
  • 完成したスライドをJPEG画像として出力できるようにするマクロ

この2つを作成しようと考えました。

コトゼニ
コトゼニ

VBA作成にあたってはChatGPTを大いに活用しました!

テンプレートに指定したスライドのコピーを作成しテキストボックスの文言を変えられるマクロ

1つ目のマクロは「テンプレートに指定したスライドのコピーを作成しテキストボックスの文言を変えられるマクロ」です。

早速、作っていきました。

マクロのプロンプト(テンプレートから作成)
コトゼニ
コトゼニ

以下の要件を満たすテンプレートを作成するvbaのコードを教えてください。【要件】・いますでに作成されている任意のスライドをテンプレートとする。 ・そのテンプレートを利用して新規スライドを作成する際、そのスライド内にあるテキストボックスの文言だけ編集できるようにしたい

chatGPT
chatGPT

以下は、任意の既存のスライドをテンプレートとして利用し、新規スライドを作成する際にそのスライド内のテキストボックスの文言だけを編集できるVBAのコードです。

Sub CreateCustomSlideFromTemplate()
    Dim templateSlide As Slide
    Dim newSlide As Slide
    Dim shp As Shape
    Dim editedText As String
    Dim i As Integer
    
    ' テンプレートとして利用するスライドを選択
    On Error Resume Next
    Set templateSlide = Application.ActiveWindow.View.Slide
    On Error GoTo 0
    
    If templateSlide Is Nothing Then
        MsgBox "テンプレートとするスライドを選択してください。", vbExclamation
        Exit Sub
    End If
    
    ' 新規スライドを作成
    Set newSlide = ActivePresentation.Slides.Add(ActivePresentation.Slides.Count + 1, templateSlide.Layout)
    
    ' テンプレートのスライドからテキストボックスをコピーして新規スライドに追加し、その後テキストを編集
    For i = 1 To templateSlide.Shapes.Count
        If templateSlide.Shapes(i).Type = msoTextBox Then
            templateSlide.Shapes(i).Copy
            newSlide.Shapes.Paste
            Set shp = newSlide.Shapes(newSlide.Shapes.Count)
            editedText = InputBox("テキストを編集してください:", "テキスト編集", shp.TextFrame.TextRange.Text)
            shp.TextFrame.TextRange.Text = editedText
        End If
    Next i
    
    ' 新規スライドが選択されるようにする
    newSlide.Select
End Sub

ここからいくつか修正し、狙い通りの挙動を実行できるマクロを作成することができました。

マクロを実行すると

マクロの様子1

指定されたスライドがまずコピーされ、編集したいテキストメッセージを入力するインプットボックスが現れます。

インプットボックスを入力すると

マクロの様子2

新しいテキストボックスの文言に修正されました。

コトゼニ
コトゼニ

テンプレートに指定した方は「進路選択:進路選択」、新しいスライドでは「進路選択:大学選び」になっていますよね

ここまでに辿る過程はこちらの記事にまとめていますので、ぜひプロンプトのやりとりの参考にしてみてください。

eyecatch46822【ChatGPT×PowerPoint】テンプレスライドをコピーしテキストボックスの内容を変えられるマクロを作った話
  • フォーマットが決まっているのでテンプレートとして指定
  • 新しいスライドのテキストボックスの文言だけを変更すれば完成となるようにする

この流れを

完成したスライドをJPEG画像として出力できるようにするマクロ

さきほどのマクロで瞬時にスライドを作成することができました。

次はそのスライドをJPEG形式で出力するマクロです。

マクロのプロンプト(JPEG出力)
コトゼニ
コトゼニ

以下の要件満たすvbaで作成してください。 ・いま編集しているスライドのみをjpgで出力する。 ・保存先は選べるようにする。 ・なるべく出力するファイルのサイズは100KB以下にする。

chatGPT
chatGPT

以下のVBAコードは、現在編集中のスライドのみをJPEG形式で出力し、保存先を選択できるようにし、出力するファイルのサイズを100KB以下に制限します。

Sub ExportSlideAsJPEG()
    Dim sld As Slide
    Dim shp As Shape
    Dim filePath As Variant
    Dim quality As Long
    Dim tempWidth As Long
    Dim tempHeight As Long
    Const ppSaveAsJPEG As Long = 17 ' JPEGのファイル形式を表す定数

    ' 現在のスライドを取得
    Set sld = ActiveWindow.View.Slide

    ' ファイル名を入力するポップアップを表示
    Dim fileName As String
    fileName = InputBox("ファイル名を入力してください。", "ファイル名入力", sld.Name)

    ' 入力がキャンセルされた場合は処理を終了
    If fileName = "" Then
        Exit Sub
    End If

    ' 拡張子が.jpgでない場合は追加
    If LCase(Right(fileName, 4)) <> ".jpg" Then
        fileName = fileName & ".jpg"
    End If

    ' 保存先のパスを作成
    filePath = ActivePresentation.Path & "\" & fileName

    ' JPEG画像の品質を設定(0から100の範囲、0が最低品質)
    quality = 85

    ' 一時的にスライドのサイズを調整する(サムネイル用)
    tempWidth = sld.Parent.PageSetup.SlideWidth
    tempHeight = sld.Parent.PageSetup.SlideHeight

    ' スライドのコンテンツをコピー
    sld.Copy

    ' 新しい一時的なプレゼンテーションを作成
    Dim tempPresentation As Presentation
    Set tempPresentation = Presentations.Add

    ' 貼り付け
    tempPresentation.Slides.Paste

    ' スライドの画像をJPEGで保存
    tempPresentation.SaveAs filePath, ppSaveAsJPEG
    tempPresentation.Slides(1).Export fileName, "JPG", quality

    ' 一時的なプレゼンテーションを閉じる
    tempPresentation.Close

 
    ' メッセージボックスで出力完了を通知
    MsgBox "スライドがJPEGファイルとして保存されました。", vbInformation

    ' スライドのサイズを元に戻す
    sld.Parent.PageSetup.SlideWidth = tempWidth
    sld.Parent.PageSetup.SlideHeight = tempHeight
End Sub

※このコードでは保存先を選択することはできません。パワーポイントの保存場所に画像が出力されることになります。

このマクロを実行すると

と、スライドのファイル名を変更した上で瞬時に保存することができました。

ここまでに辿る過程はこちらの記事にまとめていますので、ぜひプロンプトのやりとりの参考にしてみてください。

eyecatch46772【ChatGPT×PowerPoint】スライドをJPEG出力するマクロを作った話

まとめ

PowerPointに2つのマクロを搭載して、爆速で作成したスライドを画像として出力できるようになりました。

画像1枚あたりの短縮時間は1分〜2分程度かもしれませんが、今後もこの作業が続けば、30枚作ればおよそ1時間の短縮ですからね。

ChatGPTを活用して業務効率化をこれからも図りたいと思います!

最後まで読んでいただきありがとうございました。

この記事が少しでも参考になれば幸いです。

それではまたここで会いましょう!

ブログランキング・にほんブログ村へにほんブログ村

ブログ村に参加中です。上のバナーをクリックいただくだけで当ブログにポイントが入ります。いつも応援クリックありがとうございます。

Twitter

Twitter やってます。

新着記事のお知らせをしていますのでぜひフォローしてください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA