使用文本框或水印打印PDF

时间:2018-03-14 17:55:29

标签: excel vba excel-vba pdf

我希望用vba打印pdf文件,但想要添加一个文本框,其中的信息会根据excel中的列表进行更改。我在excel文件中有三列,其中包含材料pdf的文件位置,副本数量以及需要运行的订单号等信息。

目前,在我的vba打印pdf文件后,我必须手写所有订单号。有没有办法在我的代码中添加代码行,这些代码行将添加一个文本框或水印,每个pdf上都有订单号。订单号可以根据要打印的pdf文件而更改。谢谢!代码如下:

Sub Button4_Click()
Dim Msg As String, Ans As Variant

   Msg = "Would you like to print all of the BOMs"

   Ans = MsgBox(Msg, vbYesNo)

   Select Case Ans

   Case vbYes

    'NOTE:
    '/s=don't show splash screen
    '/n=new instance
    '/h=minimized window
    '/t=print to default printer; or use /t <filename> <printername> <drivername> <portname>

    'CHECK YOUR ADOBE READER VERSION, AND USE CORRECT PATH..
    zProg = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"

    zLastRow = [M65536].End(xlUp).Row           'find last row in column [M]; e.g. 15
    temp = "M1:M" & zLastRow                    'e.g. "M1:M15"

    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    For Each cell In Range(temp)                'loop through all entries in range
    zFile = cell.Value                          'fetch filename from cell
    r = cell.Row
    zPrintCopies = Cells(r, "N")
    If zPrintCopies = "" Then
    zPrintCopies = 1
    Cells(r, "B") = 1
    End If

    If zFile Like "*.pdf" Then                  'check it is a pdf file type
    .LeftHeader = Format(Now(), "dd/mm/yy")

    For i = 1 To zPrintCopies
    Shell (zProg & " /n /h /t " & zFile)        'execute command to print  the pdf document
    Next i
    End If                                      'end of test for pdf file type

    Next                                        'process next file in list
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Case vbNo
GoTo Quit:
End Select

Quit:
End Sub

1 个答案:

答案 0 :(得分:0)

以下是几个选项(虽然其中任何一个都需要一些工作):

1。以编程方式处理PDF文件

根据我的经验,PDF文件在最好的时候使用并不好玩 - 当需要实际修改文件时更是如此。这主要是因为Adobe对其专有软件如此秘密。

有能力注释文件以添加您需要的内容(请参阅here),但这可能涉及手动修改每个文件。

购买Adobe Acrobat(完整版;而不是Reader)后,我相信你会得到一个可以帮助你用VBA操作文件的库(我相信Acrobat.tlb)。值得检查VBA引用以查看您的公司是否已拥有许可证,在这种情况下something like this可能有效。

2。手动添加注释或水印

根据您需要处理的文件量,这可能是一个选项。网上有各种免费赠品,如thisthis

3。以编程方式使用您的打印机设置(通过Windows等)

许多(如果不是大多数)打印机可以选择在“所有”打印页面上添加页眉/页脚甚至水印。 (我家里的cheap Brother printer确实。)

有些人可能选择将文件名作为标题。对于我的,我会将打印机设置为包含位图作为水印,然后在每个打印作业之前以编程方式创建.bmp文件,并提供我需要包含的任何信息。使用VBA进行编码/解码时,位图非常简单。 (一些想法herehere。)