[[20250127172953]] 『任意フォルダのpngファイルをPDF化したい』(八家) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『任意フォルダのpngファイルをPDF化したい』(八家)

いつもお世話になっております。

任意のフォルダに格納されているpngファイルを一括でPDF化したいマクロを作りたいと思っていますが、
それについてご相談したく、投稿しました。

 前提:任意のフォルダにpngファイルが任意の個数で格納されている。

 条件?@:エクセルマクロファイルにおいて、特定のボタンを押すと下記の働きを持つ。
 条件?A:窓が出てきて、PDF化したい任意のフォルダが選択できる。
 条件?B:OKを押した後、フォルダに格納されているpngファイルがすべてPDF化される

::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Sub 画像をPDFに変換()

    Dim fd As FileDialog
    Dim f As String
    Dim img As Image
    Dim pdfDoc As pdf

    ' 参照設定の確認(必須)
    ' Microsoft Word Object Library または、適切な画像処理ライブラリを参照設定しているか確認してください。
    ' Visual Basic Editorの「ツール」メニューから「参照設定」を選択し、確認・追加を行います。

    ' フォルダ選択ダイアログを表示
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show <> -1 Then Exit Sub ' キャンセルされた場合

    f = fd.SelectedItems(1) & "\" ' 選択されたフォルダのパス

    ' フォルダ内の全てのpngファイルを取得
    For Each f In Dir(f & "*.png")
        On Error Resume Next ' エラーが発生しても処理を続行

        ' 画像オブジェクトを作成し、画像を読み込む
        Set img = CreateObject("AImage")
        If Err.Number <> 0 Then
            MsgBox "画像の読み込みに失敗しました:" & f & vbCrLf & Err.Description, vbCritical
            Err.Clear
            GoTo NextFile ' 次のファイルへ
        End If
        img.LoadFromFile f
        On Error GoTo 0 ' エラー処理を終了

        ' PDFドキュメントを作成し、画像を挿入
        Set pdfDoc = CreateObject("AcroExch.PDDoc")
        pdfDoc.Init
        pdfDoc.AddPage
        pdfDoc.GetPage(1).AddImage img

        ' PDFファイルを保存
        pdfDoc.SaveAs f & ".pdf"

        ' 成功メッセージを表示
        MsgBox "変換が完了しました:" & f & ".pdf", vbInformation

        ' オブジェクトの解放
        Set img = Nothing
        Set pdfDoc = Nothing

NextFile:

    Next f

    MsgBox "全ての変換処理が完了しました。"
End Sub

::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::

ただ、これを『実行』した場合、
コンパイルエラー ユーザー定義型は定義されていません 
・・というエラーメッセージが表示され、
Dim img as image が黄色マーカーで表示され、うまく実行できません。

エラーがなくなるよう、適切なコードをご教授願えないでしょうか。

< 使用 Excel:Excel2019、使用 OS:Windows11 >


こんばんわ (*^^*)
外部ソフトを読み込まなくても、シートに画像ファイルを貼り付けて
PDF出力ではだめなのでせうか
 Set pdfDoc = CreateObject("AcroExch.PDDoc")が必須でしたら他の回答者様の
お出ましをお待ちください。使った事が有りませんで、悪しからずm(__)m
でわ
m(__)m
For Each 〜でもエラーが有りそうな気がします。。。^^;
余計なお世話でしたら御免くださりませ。。。<< _ _ >>

(隠居Z) 2025/01/27(月) 21:29:10


隠居Z様
ありがとうございます。
その発想はありませんでした。
解決できそうです
ありがとうございました。
(八家) 2025/01/27(月) 21:39:18

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.