2017-10-16 714 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

Update-2 My code Afte [R建议:

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

问题: 我设法用run方法来打印,但是我有每个文件后关闭Adobe Acrobat Reader软件。我必须打印500多个文件。

+0

你是**壳牌**循环;你确定一个** Shell **在下一个启动之前完成? –

+0

Adob​​e在打印完成之前保持打开状态吗?如果您尝试将Adobe声明为对象,则打印,Adobe.Quit,然后执行“虽然不是Adobe”。我没有太多操作Adobe的经验,但这是一种可行的方法。 –

+0

请参阅:https://stackoverflow.com/questions/15951837/wait-for-shell-command-to-complete –

回答

0

我修改代码使用Ghostscript

子PrintPDFFiles()

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 

末次

+0

我没有看到等待shell命令在您的答案中完成。 – shaadi

+0

在http://dmcritchie.mvps.org/excel/shell.htm有一个shell样本, – VinhCC

+0

链接与我的上下文无关 - 没有waitOnReturn。 问题是我想在循环开始另一行之前完成一行。我已经在使用shell查看我的示例代码。 – shaadi

0

使用this打印所有排序从小区列表文件,因为文件目录中的文件。基本上,该软件按顺序打印所有类型的文件。