2017-10-16 18 views
1

PDFファイルをどのように順番に印刷できるか(セルリストの順番)は分かりません。Excel-VBAを使用してセルリストの順にPDFファイルを印刷する方法は?

Sub PrintPDFFiles() 
    zProg = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe" 
    zLastRow = [a65536].End(xlUp).Row 
    temp = "a1:a" & zLastRow 
    zPrinter = "HP LaserJet Professional M1213nf MFP " 
    For Each cell In Range(temp) 
    zFile = cell.Value 
    If zFile Like "*.pdf" Then 
    Shell """" & zProg & """/n /h /t""" & zFile & """" 
    End If 
    Next 
    End Sub 

ビジュアルエイド: enter image description here

研究私がこれまで行ってきた:

ませんコマンドラインswitchは順序でファイルを印刷します。提案後

更新-1 MyCode:

私は私のコードでメソッドをobject.run使用し、私が取得エラー:

Sub PrintPDFFiles() 
    zProg = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe" 
    zLastRow = [a65536].End(xlUp).Row 
    temp = "a1:a" & zLastRow 
    zPrinter = "HP LaserJet Professional M1213nf MFP " 
    For Each cell In Range(temp) 
    zFile = cell.Value 
    If zFile Like "*.pdf" Then 
    Dim wsh As Object 
    Set wsh = VBA.CreateObject("WScript.Shell") 
    Dim waitOnReturn As Boolean: waitOnReturn = True 
    Dim windowStyle As Integer: windowStyle = 1 
    zCommand = zProg & " /n /h /t " & Chr(34) & zFile & Chr(34) & " " & zPrinter 
    wsh.Run zCommand, windowStyle, waitOnReturn 
    End If 
    Next 
    End Sub 

エラー:

Error

更新-2マイコードAfte R提案:

wsh.Run """Acrobat.exe"" /n /h /t" & Chr(34) & zfile & Chr(34) & " " & zPrinter, , waitOnReturn 

問題: は、私は、しかし、私は、各ファイルの後には、Adobe Acrobat Readerを閉じるように持って、runメソッドを使用して印刷することができました。私は500以上のファイルを印刷する必要があります。

+0

あなたは**シェル**でループしています。あなたは確かですか?**シェル**は次のものが打ち上げられる前に完了しますか? –

+0

Adob​​eは印刷が完了するまで開いていますか? Adobeをオブジェクトとして宣言しようとすると、「Adobe.Quit」、「Do not Not Adob​​e Is Nothing」のようになります。私はAdobeを操作する経験があまりありませんが、それは可能な方法です。 –

+0

を参照してください:https://stackoverflow.com/questions/15951837/wait-for-shell-command-to-complete –

答えて

0

私は、ファイルがファイルディレクトリに存在していることを与えられたセルリストからのファイルのすべての並べ替えを印刷に使用this

zProg = "gsprint -printer printerName -dPDFFitPage " 
zLastRow = [a65536].End(xlUp).Row 

Dim Counter As Integer 

For Counter = 1 To zLastRow 

    zFile = Worksheets("Sheet1").Cells(Counter, 1).Value ' Where 1 is the first column 
    If zFile Like "*.pdf" Then 
     Shell """" & zProg & zFile & """" 
    End If 

Next Counter 

End Subの()のGhostScriptで

+0

あなたの答えでシェルコマンドが完了するまで待ちません。 – shaadi

+0

http://dmcritchie.mvps.org/excel/shell.htmにシェルのサンプルがあります – VinhCC

+0

私の文脈ではリンクはありません - いいえwaitOnReturn。 問題は、ループ内の別の行を開始する前に1行を終了したいということです。私はすでにshellを使用しています。問題のサンプルコードを見てください。 – shaadi

0

サブPrintPDFFilesをコードを変更します。基本的に、このソフトウェアはすべての種類のファイルを順番に印刷します。

関連する問題