【问题标题】:printing specific pages form pdf file using print scope string使用打印范围字符串从 pdf 文件打印特定页面
【发布时间】:2020-03-16 07:30:07
【问题描述】:

我需要使用 excel VBA 打印 *.pdf 文件的选定页面。 我需要做到这一点不是通过提供范围“从 - 到”,而是提供像“1-3,4,8,17-25”这样的页面范围

我只能使用以下代码打印整个文件:

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Public Function PrintThisDoc(formname As Long, FileName As String)
On Error Resume Next
Dim X As Long
X = ShellExecute(formname, "Print", FileName, 0&, 0&, 3)
End Function

Sub testPrint()
Dim printThis
Dim strDir As String
Dim strFile As String
strDir = "C:\Users\any\Desktop"
strFile = "somefile.pdf"


printThis = PrintThisDoc(0, strDir & "\" & strFile)
End Sub ```

【问题讨论】:

  • 很遗憾没有。我不需要将工作表打印为 pdf。我需要使用 excel VBA 从现有的 pdf 文件中打印特定页面。

标签: excel vba pdf printing


【解决方案1】:

this post来看,单独使用ShellExecute是不可能的。您需要编写一个脚本,该脚本将在您安装的任何 PDF 阅读器中打开文件,在此处找到“打印”按钮并提供所有选项。这将需要大量的工作,并且取决于 Windows 和 PDF 阅读器的版本,所以基本上它只适用于您,而不适用于其他用户。 如果你想走这条路,看看FindWindowSendMessage WinAPI 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多