三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

ExcelからPowerPointを操作 雛型ファイルを開き 宛先を代入 PDF保存する マクロを作成

要約:Excelのマクロを使用してPowerPointの雛型ファイルを開き、特定の文字列を代入してPDFとして保存する方法を紹介しています。目的は、複数のクライアント用に同じ資料の表紙にある会社名を一括で変更し、PDF化することです。具体的なVBAコードとその実行手順が示されています。

キーワード:
#ExcelVBA #PowerPointVBA #マクロ #VBA #PDF保存 #自動化 #差し込み印刷 #テンプレート #プログラミング

1.やりたいこと

知恵袋の質問
detail.chiebukuro.yahoo.co.jp
より

>同じ資料を複数のクライアントに使用するため、
>元のファイルから表紙の先方会社名を一社一社変更し、
>PDF化しています。

>先方会社名リスト(Excel?)から表紙の宛先を一括変更し、
>それぞれPDFに変換する事は可能でしょうか?

youtu.be
https://youtu.be/9iLevOxJOoU
目次
00:00 1.やりたいこと
01:08 2.実行結果を先に見せる
03:53 3.仕組みの解説
12:44 4.ソースコードの解説
5.繰り返し、作成処理を実演する
19:30 5.1 企画書、ひな型を修正して、走らせてみる
26:30 5.2 1枚の宛先違いの案内状や修了証書など
6.おわりの挨拶

Excel設定と入力シートのイメージ:

Excelシートのイメージ

2.実行結果を先に見せる
先に、結果
https://www.youtube.com/watch?v=9iLevOxJOoU&t=68
を見せる

3.仕組みの解説

03:53 https://www.youtube.com/watch?v=9iLevOxJOoU&t=233

①雛型ファイルを開き
B2のExcelと同じフォルダのPowerPointファイルを開きます

②文字列をシェイプに代入
シェイプに代入するには、ページとシェイプの名前が必要です。
Set ppShape = ppプレゼン.Slides(ppPAGE).Shapes(ppTEXTNAME)
'↑のB3:PageB4:テキストボックス名でセット位置を決める

あとは、B列の値を代入する
'ppテキストにExcel側のB列のデータをセットする
ppShape.TextFrame.TextRange.Text = Cells(nROW, "B").Text

③PDF保存する
ActivePresentation.Export "D:\2024\test240522", "PDF"
で、PDF保存が可能なので、
A列のファイル名を使用して、作成する

4.ソースコード

ExcelからテンプレPowerPointを開き データセット後 別名保存する 差し込み印刷っぽいデータ流し込み処理
ExcelからテンプレPowerPointを開き データセット後 別名保存する 差し込み印刷っぽいデータ流し込み処理をマクロで作成する ひな型パワポにデータをセットする - YouTube
↑が似ている処理かなぁ。

これ↑を、PDF保存に変えただけです

12:44 コード解説を開始
https://www.youtube.com/watch?v=9iLevOxJOoU&t=764

ソースコード

Option Explicit

'B2のExcelと同じフォルダのPowerPointファイル
'B3で指定したスライドページの
'B4名前のテキストボックスにB10列~データセット
'セット後、A10列~の名前で上書き保存する
Sub ExcelからPowerPointひな型にデータセット後PDF保存240522()

    '入力テンプレ:パワポのファイルを開く
    Dim ppApp As Object   'PowerPoint.Application

    Set ppApp = CreateObject("PowerPoint.Application")
    ppApp.Visible = True '可視にする

    'いつもActivePresentationでやってるけど、たまには変数を使用
    Dim strひな型FILE As String
    strひな型FILE = ThisWorkbook.Path & "\" & Range("B2") 'フルパス作成
    Dim ppプレゼン As Object  'PowerPoint.Presentation pp:プレゼンテーション
    Set ppプレゼン = Nothing '初期化、エラーチェックもかねて
    On Error Resume Next   '↓でSet 取得エラー時に次へ ファイルが開けなかった時
    Set ppプレゼン = ppApp.Presentations.Open(strひな型FILE) 'B2のファイル名を開く
    On Error GoTo 0  'エラーを元に戻す※これを忘れると、デバッグ時にハマるから注意
    '↑単純に、.Open "ファイル名" で開いただけです
    If ppプレゼン Is Nothing Then
        MsgBox "B2パワポのファイル名、パスを確認してください", vbExclamation
        Exit Sub
    End If

    Dim ppPAGE As Integer   'セットする pp:スライドページ数
    ppPAGE = Range("B3")    'B3の値を使用
    
    Dim ppTEXTNAME As String   'セットする pp:テキストボックス名
    ppTEXTNAME = Range("B4")   'B4の値を使用
    
    'ループ処理でパワポファイルを作成する
    Dim nROW  As Integer   'Excle:指示パラメーターの行
    Dim ppShape As Object  'PowerPoint.Shape パワポのシェイプ、テキスト、図形ほか
    Dim strWORK As String
    Dim strFILENAME As String  '保存ファイル名をPath付きで作成する
    
    'ExcelのA10~にある指示データがなくなるまでループしたいので
    For nROW = 10 To 999  'また、固定のループで↓の空白で抜けるループかよ
        If Len(Trim(Cells(nROW, "A"))) = 0 Then Exit For 'A列の保存名が空白の時ループを抜ける

        Set ppShape = Nothing  'エラーチェックも兼ねて、初期化
        On Error Resume Next   '↓でSet 取得エラー時に次へ ページかテキストボックス名が間違えている時
        Set ppShape = ppプレゼン.Slides(ppPAGE).Shapes(ppTEXTNAME)
        '↑のB3:PageとB4:テキストボックス名でセット位置を決める
        On Error GoTo 0  'エラーを元に戻す※これを忘れると、デバッグ時にハマるから注意

        If ppShape Is Nothing Then  'ページかテキスト名がミスっていたら
            strWORK = "エラー パワポのpageかテキスト名が見つかりません、確認してください"
            MsgBox strWORK, vbExclamation
            Exit Sub
        End If

        'ppテキストにExcel側のB列のデータをセットする
        ppShape.TextFrame.TextRange.Text = Cells(nROW, "B").Text
        DoEvents

        'A列の名前で上書き保存する、ここでは、エクセルと同じPathに保存
        strFILENAME = ThisWorkbook.Path & "\" & Cells(nROW, "A").Text
        ppプレゼン.Export strFILENAME, "PDF"  'PDF出力する
        DoEvents
        ' 1秒停止
        Call Application.Wait(Now + TimeValue("00:00:01"))

    Next nROW
    
    'pp側の後始末、パワポを閉じる
    DoEvents
    ppApp.Quit    'パワポアプリを閉じる
    ' 1秒停止
    Call Application.Wait(Now + TimeValue("00:00:01"))
    DoEvents
    Set ppプレゼン = Nothing
    Set ppApp = Nothing
    
    MsgBox "処理終了、確認してね"

End Sub

5.繰り返し、作成処理を実演する

シートをコピーしてから、実行すると便利かも?

5.1 企画書、ひな型を修正して、走らせてみる
19:30 ~
https://www.youtube.com/watch?v=9iLevOxJOoU&t=1170

ダミーの会社名:

サンライズエレクトロニクス
ブルーオーシャンシッピング
グリーンフォレスト製紙
レッドフレーム建設
ゴールデンフィールド農業
シルバーライトテクノロジー
ホワイトクラウド航空
ブラックマウンテン鉱業
ピンクペタル化粧品
オレンジバレー食品

5.2 1枚の宛先違いの案内状や修了証書など
26:30 ~
https://www.youtube.com/watch?v=9iLevOxJOoU&t=1590

修了証明.pptx

ダミーの新人研修終了者名:

山田太郎
佐藤花子
鈴木一郎
田中美咲
伊藤弘
渡辺京子
小林直人
加藤あゆみ
斎藤健
中村博文

6.おわりの挨拶

こんな感じで、ExcelからPowerPointへセット可能なので、
アレンジして使ってみてください。

作業軽減のヒントとなれば、幸いです。

再生リストの紹介:ほかにも差し込み印刷をマクロで作成しているので、下記の再生リストを見て笑ってください
https://www.youtube.com/playlist?list=PL8vZhsyiiFhtDYDOdz94s6bQ54vwPRN-3
↑中途半端に終わっている感じですが、処理のヒントとなれば・・・



YouTubeの概要・説明欄の内容に基づいて、以下の情報を作成しました。

1. 要約:
このビデオでは、Excelのマクロを使用してPowerPointの雛型ファイルを開き、特定の文字列を代入してPDFとして保存する方法を紹介しています。目的は、複数のクライアント用に同じ資料の表紙にある会社名を一括で変更し、PDF化することです。具体的なVBAコードとその実行手順が示されています。

2. キーワード:
Excel, PowerPoint, マクロ, VBA, PDF保存, 自動化, データセット, 差し込み印刷, テンプレート, プログラミング

3. タイトル案:
- ExcelマクロでPowerPoint資料を自動更新&PDF化!
- 一括で会社名を変更!ExcelからPDFへの効率的な変換法
- VBA活用!PowerPointの雛型をカスタマイズしてPDF出力

4. 似ている単語のペア:
- Excelとエクセル
- VBAとビジュアルベーシック
- マクロと自動化
- PowerPointとパワーポイント
- PDF保存とPDFエクスポート
- データセットとデータ入力
- 差し込み印刷とメールマージ



Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)