【发布时间】:2015-04-16 19:42:14
【问题描述】:
我使用电子表格页面 Excel 提示中的教程:邮件合并 - 没有 Word 为 100 条记录创建邮件合并样式报告。使用记录索引和来自另一个工作表的间接查找都可以很好地生成我需要的报告。
我希望将每个输出保存为使用合并中的字段命名的 PDF,而不是打印。我尝试将“ActiveSheet.PrintOut”替换为“ActiveSheet.ExportasFixedFormat”并输入 PDF 规范。它在一定程度上起作用,因为我能够在指定位置生成 PDF,但它只会生成一个 PDF,而不是我试图创建的整个范围。
这是我尝试使用的代码。我查看了其他答案,了解如何遍历每条记录以创建单独的 PDF,但一次只能生成一个 PDF。
Public Const APPNAME As String = "Progress Report"
Option Explicit
Sub PrintForms()
Dim StartRow As Integer
Dim EndRow As Integer
Dim Msg As String
Dim HRETID As String
Dim i As Integer
Sheets("ProgressReport").Activate
StartRow = Range("StartRow")
EndRow = Range("EndRow")
HRETID = Range("HRETID")
If StartRow > EndRow Then
Msg = "ERROR" & vbCrLf & "The starting row must be less than the ending row!"
MsgBox Msg, vbCritical, APPNAME
End If
For i = StartRow To EndRow
Range("RowIndex") = i
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\ewilliamson\PDFs\" & HRETID, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False
Next i
End Sub
【问题讨论】:
-
您希望 PDF 文件名来自哪里?
-
Filename:="C:\Users\ewilliamson\PDFs\" & HRETID & i & ".pdf"至少会给你编号的副本 -
最终,我希望文件名是“HRETID_Date.pdf”。 “HRETID”字段是基于“当前记录”索引的另一个工作表的间接查找,并随范围内的每一行而变化。我删除了 HRETID,只使用了“i”变量,它可以生成我需要的 pdf,但它们只是按顺序编号。如果有一种方法可以基于 i 变量包含 HRETID 并将其包含在文件名中,那么我就准备好了。谢谢!
-
Filename:="C:\Users\ewilliamson\PDFs\" & Range("HRETID").Value & ".pdf"应该这样做 -
成功了,非常感谢!