【问题标题】:Export Excel worksheets to individual pdfs using VBA code使用 VBA 代码将 Excel 工作表导出为单个 pdf
【发布时间】:2016-12-06 20:09:31
【问题描述】:

我有一个脚本,我想在 MS Access 中运行以将后期绑定的选定工作簿中的所有工作表导出到特定位置的单个 PDf,其中 PDF 文件名是工作表的名称。以下是我到目前为止所拥有的,但我无法弄清楚导出代码是什么。我曾尝试修改 Excel VBA 代码 (Excel VBA to Export Selected Sheets to PDF) 以导出,但它在每一步都不断返回编译错误。

Dim xls  As Object
Dim wkb  As Object
Dim wks1 As Object
Dim wks2 As Object
Dim wks3 As object
Set xls = CreateObject("Excel.Application")
Set wkb = xls.Workbooks.Open("\\EXCHSVR1\stone\Mold_Books\" & mold_id & "\" & Mid(Mid(strFlpath, InStrRev(strFlpath, "/") + 1), InStrRev(strFlpath, "\") + 1))
Set wks1 = wkb.Worksheets(1)
 'code to export the first worksheet to "C:\test\" & wks1.name
Set wks2 = wkb.Worksheets(2)
 'code to export the second worksheet to "C:\test\" & wks2.name
Set wks3 = wkb.Worksheets(3)
 'code to export the third worksheet to "C:\test\" & wks3.name

【问题讨论】:

  • 对不起,我错过了。是的,我确实参考了早期代码中的工作簿。我在上面加了
  • move Set xls = CreateObject("Excel.Application") to be after last Dim
  • 对不起,上面的代码没有。当我尝试使用后期绑定并访问 vba 时出现编译错误,找不到像 xlTypePDF 这样的对象。 photos.google.com/share/…

标签: excel ms-access vba


【解决方案1】:

根据您的评论,这是您面临的编译错误的一个示例:

发生这种情况是因为xlTypePDF 是一个 Excel 常量,除非您设置对 Microsoft Excel 对象库 的引用,否则 Access 不知道该常量。

由于您想使用后期绑定,您可能不想将该引用添加到您的 VBA 项目中。在这种情况下,您可以做两件事。

  1. 在您的访问代码中声明常量:Const xlTypePDF As Long = 0 然后您可以继续在代码的其他地方使用该常量的名称,而不会触发编译错误。
  2. 或者在您的访问代码中使用常量的值 (0) 而不是它的名称。

您将不得不以同样的方式处理其他 Excel 常量,例如 xlQualityStandard

【讨论】:

  • 嘿太棒了,它奏效了!我在这里发布了完整的代码drive.google.com/…
  • 我做的另一件事是在创建所有 PDF 之前添加到顶部的代码是 ---wkb.CheckCompatibility = False--- 和另一行 ---xls.DisplayAlerts = False- -- 这是为了防止所有那些阻止流程流动的警告。
  • 很抱歉继续添加此内容。我还发现了如何计算常量的给定值。只需转到 excel VBA 并输入 debug.print xlTypePDF 然后按回车键,它将返回 0,这样我们就可以知道将我们的 CONST 值声明为什么。
【解决方案2】:

您正在查看的帖子正在使用活动工作表。您正在创建工作表对象。在每个工作表对象上使用ExportAsFixedFormat

wks1.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=myPDFFilePathAndName, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

wks2.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=myPDFFilePathAndName, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

wks3.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=myPDFFilePathAndName, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

【讨论】:

  • 问题是,当我采用这种方法时,最终会出现编译错误。
  • 对此感到抱歉。它说编译错误变量未定义。
  • 好的,如果我提前将 excel 引用绑定到我的数据库,这将起作用,这可能会工作一段时间,但最好是后期绑定,因为它使支持更容易。是否可以后期绑定您的解决方案?
  • 您仍然可以使用后期绑定 - 只需找到 Excel 常量的值并自行设置。您在这里只有三个可以找到 - 但如果您的 Excel 代码大量使用 xl 常量,则可能需要一段时间才能将它们全部设置好。 (xlTypePDF, xlQualityStandard, xlQualityStandard)
猜你喜欢
  • 2021-04-22
  • 2020-06-27
  • 2016-08-04
  • 1970-01-01
  • 2014-01-12
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多