预先填写表单,然后保存为PDF



我对VBA还比较陌生,正在边学习边学习——如果有人能告诉我几个星期来一直陷入的困境,我将不胜感激。

我有几个Excel文件,每个文件有两张表("表格"one_answers"详细信息"(。"表格"表格中的单元格根据"详细信息"中的值列表(例如姓名、姓氏、日期等(填写,以自动预填写(通过vlookup等(。

到目前为止,我已经为文件分配了一个宏,以便在不同的页面上打印出每个新的"表单",如下所示。

Sub PrintForm()
Dim i As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("Details")
Set ws2 = Sheets("Form")
'   2 assumes a header row - use 1 if there isn't one
For i = 2 To ws1.Cells(Rows.Count, "A").End(xlUp).Row
With ws2
'   Populate the Forms sheet with employee names
.Range("B2").Value = ws1.Cells(i, "A").Value
.PrintOut
End With
Next i
End Sub

然而,到目前为止,这段代码一直运行良好,我没有每周打印大约100张"表格",而是试图找出如何将这些"表格"中的每一张保存为PDF并保存到文件夹中(基本上是打印每一张表格,但作为数字副本(。

我已经到了一半(我想(。当运行下面的代码时,它可以在一个文件上完美地工作(打印大约7个表单(。但在另一个文件中,有一个更大的"Details"表,它会返回一条带红十字的"400"消息,或者只运行前20个值(只是有时(。我不确定这意味着什么,也不知道我该如何修复它。

Sub PrintForm()
Dim i As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("Details")
Set ws2 = Sheets("Form")
'   2 assumes a header row - use 1 if there isn't one
For i = 2 To ws1.Cells(Rows.Count, "A").End(xlUp).Row
With ws2
'   Populate the Forms sheet with employee names
.Range("B2").Value = ws1.Cells(i, "A").Value
.ExportAsFixedFormat _
Type:=x1TypePDF, _
Filename:="C:ArchiveForms" & .Range("B2") & ".pdf", _
Quality:=x1QualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
Next i
End Sub

如有任何意见,不胜感激。如果我能做些什么来进一步解释这个问题,请告诉我。

我通过交叉引用已经工作的工作表(将7个表单打印成PDF的文件(解决了这个问题。

已将代码调整为从Sub PrintForms((开始[复数,而不是初始代码中的单数Sub PrintForm((]。

已经成功地完成了7个表单的测试运行,打印成PDF到我指定的文件夹。

让我们希望这就是问题所在,并能保存40多个文件!:(

更新:

它实际上不能支持40多个文件——错误出现在"B2"的返回值中,其中包括受限制的字符——因此文件无法自动保存。

我已经按照下面的代码修复了它,用空格替换了每个受限制的字符。这目前运行良好,适用于40多个文件。

Sub PrintForms()
Dim i As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("Details")
Set ws2 = Sheets("Form")
'   2 assumes a header row - use 1 if there isn't one
For i = 2 To ws1.Cells(Rows.Count, "A").End(xlUp).Row
With ws2
'   Populate the Forms sheet with employee names
.Range("B2").Value = ws1.Cells(i, "A").Value
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:Folder1Subfolder1" & Replace(Replace(Replace(.Range("B2").Value, "?", ""), "/", ""), "*", "").Value & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
End Sub

相关内容

  • 没有找到相关文章

最新更新