我正在尝试为使用下拉列表的工作表创建到PDF宏的打印。我希望下拉列表中的每个选项都另存为自己的PDF。
这是我的代码:
Sub Print_To_PDF()
Sheets("MS Wall Summary Daily View").Activate
Dim vRws As Long, vRng As Range
Dim d As Range, d8 As Range, Wst As Worksheet
Dim fPathFile As String
fPathFile = [NewStoreRollout]
Set Wst = Worksheets("MS Wall Summary Daily View")
Set d8 = Wst.Range("D8")
With Wst
vRws = .Cells(Rows.Count, "A").End(x1Up).Row
Set vRng = Range(.Cells(2, "A"), .Cells(vRws, "A"))
.PageSetup.PrintArea = "$C$2:$M$116"
End With
For Each d In vRng.Cells
d8 = d
Wst.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fPathFile,
Quality:=xlQualityStandard, _IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next d
End Sub
我的下拉列表从A1开始,尽管我希望PDF从A2开始。带有下拉列表的单元格是d8
名为“ NewStoreRollout”的单元包含我要保存PDf的文件路径。
谢谢
答案 0 :(得分:2)
VBA中的可执行指令以两个令牌之一终止:
:
\r\n
(即vbNewLine
/ Chr(10)
+ Chr(13)
)这将使该指令不完整...
Wst.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fPathFile,
...如果第三个参数不是可选的。由于末尾的逗号是可选的,因此完全可以接受,并且解释为将Variant/Empty
值作为第三个参数传递。
因此VBA将其称为有效语句,然后继续进行下一个语句:
Quality:=xlQualityStandard, _IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
嗯。这看起来像一个参数列表,但此处未调用任何内容,因此VBA感到困惑,并且不知道将该参数列表传递给哪个过程。
您想要的是将两条物理线计为一条逻辑线。您可以使用连续行令牌_
(空格,后跟下划线)来做到这一点。
Wst.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fPathFile, _
Quality:=xlQualityStandard, _IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
这样,当编译器到达第一行的末尾时,它知道指令在下一行继续。
好像您在Quality
参数之后有换行符,然后删除了换行符,但没有下划线-_IncludeDocProperties
参数应该为IncludeDocProperties
。随意添加所需的数量(尽管最多不超过20个),以使代码更易于视觉处理:
Wst.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=fPathFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False