[[20220521163713]] 『フォルダ内のPDFファイルを全て印刷』(狭山) ページの最後に飛ぶ

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

 

『フォルダ内のPDFファイルを全て印刷』(狭山)

お世話になります。
ディスクトップ上にPDFファイル収納というフォルダーがあります。
これをエクセルファイル名(PDF印刷)を開きマクロを実行すると
全てのPDFファイルを印刷とシート1のC5から印刷をしたPDFファイル名も
出せないかと
どうぞよろしくお願い申し上げます。

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


↓のような方法を使うか、pdfを制御する専門
よツールを使う、あるいはマクロになると思います。

頑張ってください。
マクロでの例はここの過去ログにもあるようです。

https://search.yahoo.co.jp/amp/s/dekiru.net/article/18116/amp/%3Fusqp%3Dmq331AQIKAGwASCAAgM%253D
(通りすがり) 2022/05/21(土) 17:09


ありがとうございました。

過去ログを検索してみたのですが見当たらずで
他のサイトに以下のコードがありましたので月曜日に会社のプリンターと接続して
テストしてみます。

Option Explicit
'---コード1|フォルダ内のPDFファイルをファイル名称で取得するためのおまじない
Declare Function StrCmpLogicalW Lib SHLWAPI.DLL (ByVal lpStr1 As String, ByVal lpStr2 As String) As Long
'---コード2|フォルダ内のPDFファイルだけを抽出
Sub Print_PDFs()

    Dim i As Long
    Dim fs As FileSystemObject
    Dim basefolder As Scripting.Folder
    Dim filepath As String
    Dim st() As String
    Dim mysubfiles As Scripting.Files
    Dim mysubfile As Scripting.File
    Set fs = New Scripting.FileSystemObject
    filepath = ThisWorkbook.path
    Set basefolder = fs.GetFolder(filepath)
    Set mysubfiles = basefolder.Files

    i = 0
    For Each mysubfile In mysubfiles
        If fs.GetExtensionName(path:=mysubfile) = pdf Then
            ReDim Preserve st(i)
            st(i) = mysubfile.path
            i = i + 1
        End If
    Next

    '---コード3|抽出したPDFファイルに配列を利用して、名前順に並び替える
    Dim j As Long
    Dim tmp As String
    For i = 0 To UBound(st)
        For j = i To UBound(st)
            Debug.Print st(i), st(j)
            If StrCmpLogicalW(StrConv(st(i), vbUnicode), StrConv(st(j), vbUnicode)) > 0 Then
                tmp = st(i)
                st(i) = st(j)
                st(j) = tmp
            End If
        Next
    Next

    '---コード4|フォルダの名前順にPDFファイルを印刷していく
    Dim objAcroApp As New Acrobat.AcroApp
    Dim objAcroAVDoc As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc As Acrobat.AcroPDDoc
    Dim Acroid As Long
    Acroid = objAcroApp.Show
    Dim f As Variant
    Dim str As String

    For Each f In st
        Acroid = objAcroAVDoc.Open(f, )
        Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
        Dim Page As Long
        Page = objAcroPDDoc.GetNumPages
        Acroid = objAcroAVDoc.PrintPages(0, Page - 1, 2, 0, 0)
        If Acroid <> -1 Then
            str = str ; vbCrLf ; f
            Exit Sub
        End If
        Acroid = objAcroAVDoc.Close(False)
    Next

    Acroid = objAcroApp.Exit
    Set objAcroApp = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroAVDoc = Nothing

    '---コード5|印刷されなかったPDFファイルについてメッセージで知らせる
    If str <>  Then
        MsgBox 以下のファイルは印刷できませんでした ; vbCrLf ; str
    End If
End Sub
(狭山) 2022/05/21(土) 18:48

そのコードはReaderではなくAcrobat を必要とします。
そこは大丈夫ですか?
(確認) 2022/05/21(土) 19:03

過去ログは↓です。
今手元にエクセルがないので試していません。

[[20191114115000]] 『同一フォルダ内のPDFファイルを全て印刷するVBAに』(Ken)
(通りすがり) 2022/05/21(土) 19:27


私自身は、pdfを一括でプリントアウト
したい場合は専門のツールを使っています。
ツールにドラッグ&ドロップでpdfファイル
を登録し印刷したい順に並び替えた後一つ
のpdfとして出力、できたpdfをプリント
アウトとしています。
(通りすがり) 2022/05/21(土) 19:32

皆さん、たくさんのご意見ありがとうございます。
とても参考になります。
印刷が絡みますので月曜日にお返事いたします。
ご丁寧にありがとうございます。
(狭山) 2022/05/21(土) 20:35

コメント返信:

[ 一覧(最新更新順) ]


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