使用VBA代码

时间:2016-08-01 16:45:21

标签: vba excel-vba ms-access access-vba excel

我有一个脚本,我想在MS Access中运行,将后期绑定选定工作簿中的所有工作表导出到特定位置的单个PDfs,其中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

2 个答案:

答案 0 :(得分:2)

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

enter image description here

这是因为xlTypePDF是Excel常量,除了您设置对 Microsoft Excel对象库的引用之外,Access不知道。

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

  1. 在您的Access代码中声明常量:Const xlTypePDF As Long = 0然后您可以继续在代码中的其他位置使用该常量的名称,而不会触发编译错误。
  2. 或者在访问代码中使用常量值(0)代替其名称。
  3. 您必须以同样的方式处理其他Excel常量,例如xlQualityStandard

答案 1 :(得分:1)

您正在查看的帖子正在使用活动工作表。您正在创建工作表对象。在每个工作表对象上使用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