打印文件 - 宏

时间:2018-05-15 07:30:45

标签: vba excel-vba excel

我创建了一个可用于打印PDF文件的宏。 PDF文件将保存在要打印的文件夹中。将为该路径指定保存所有PDF文件的文件夹路径。我的问题是:

1)文件保存在文件夹后,是否可以像先到先打印一样自动排序。现在的问题是 - 打印没有按照文件的顺序排出 - 我们必须协调所有文件,因此以随机列表顺序查找每个文件将花费大量时间。

2)打印完成后是否可以自动从文件夹中删除文件?

Public Sub Print_All_PDF_Files_in_Folder()

Dim folder As String
Dim PDFfilename As String

folder = "\\maple.fg.rbc.com\data\toronto\user_3\315606053\myWorkspace\Desktop\test"    'CHANGE AS REQUIRED
If Right(folder, 1) <> "\" Then folder = folder & "\"

PDFfilename = Dir(folder & "*.pdf", vbNormal)
While Len(PDFfilename) <> 0
    If Not PDFfilename Like "*ecg*" Then
        Print_PDF folder & PDFfilename
    End If
    PDFfilename = Dir()  ' Get next matching file
  Wend
End Sub

Sub Print_PDF(sPDFfile As String)
  Shell "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe /p /h " & Chr(34) & sPDFfile & Chr(34), vbNormalFocus
' This is path of Adobe in the desktop
End Sub

1 个答案:

答案 0 :(得分:1)

没有构建文件排序的方法。但是,将文件名和-dates读取到数组中并手动对它们进行排序相当容易,但您必须使用FilesystemObject而不是使用dir来获取文件日期。

您可以在此处找到一个示例:https://social.msdn.microsoft.com/Forums/office/en-US/5f27936e-1d98-44df-8f69-0f81624c4b92/read-files-in-a-folder-in-descending-order-with-file-name-or-date-created?forum=accessdev

使用VBA删除文件的命令是kill,或者您可以使用.DeleteFile的{​​{1}}方法。但是,这仅在打印已完成时才有效,因此您必须等待shell命令完成。为此,您必须使用FilesystemObject,例如参见https://stackoverflow.com/a/8906912/7599798