使用 word docs 和 ms access 生成完整的 PDF 表单
Generating completed PDF forms using word docs and ms access
我正在尝试使用 Microsoft Access 填写带有书签文本表单域的 word 文档,然后将它们导出为 PDF。我正在努力在 Access 中生成始终如一的 Visual Basic 代码。我继续收到关于被锁定无法编辑的 word 文档的错误。不确定如何进行
我目前拥有的代码
Public Sub ExportToMGR()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim rs As DAO.Recordset
Set wApp = New Word.Application
Set wDoc = wApp.Documents.Open("C:\filepath\doc.docx")
Set rs = CurrentDb.OpenRecordset("Detail Report - Individuals")
If Not rs.EOF Then rs.MoveFirst
Do Until rs.EOF
wDoc.Bookmarks("FullName1").Range.Text = Nz(rs!ClientName, "")
wDoc.Bookmarks("FullName2").Range.Text = Nz(rs!ClientName, "")
wDoc.SaveAs2 "C:\filepath\" & "firstTest.docx"
rs.MoveNext
Loop
End Sub
欢迎来到 SO。
您不应打开 Word 文档,而应创建一个 Word 模板 (.dotx) 并通过调用 .Add()
方法将其添加到文档集合中。
文档填满数据后,需要调用.ExportAsFixedFormat()
方法保存为PDF。
请参阅下面的示例。
Option Explicit
Private Sub RunMailMerge_Click()
On Error GoTo Trap
Const TEMPLATE_PATH As String = "YourTemplateFolder\WordTemplate.dotx"
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim rs As DAO.Recordset
Dim idx As Long
Set wApp = New Word.Application
wApp.Visible = False
Set rs = CurrentDb.OpenRecordset("Detail Report - Individuals")
If rs.EOF Then GoTo Leave
With rs
.MoveLast
.MoveFirst
End With
For idx = 1 To rs.RecordCount
Set wDoc = wApp.Documents.Add(TEMPLATE_PATH)
With wDoc
.Bookmarks("FullName1").Range.Text = Nz(rs!ClientName, vbNullString)
.Bookmarks("FullName2").Range.Text = Nz(rs!ClientName, vbNullString)
.ExportAsFixedFormat "DocumentPathWithExtension.pdf", wdExportFormatPDF, False, wdExportOptimizeForOnScreen
.Close wdDoNotSaveChanges
End With
Set wDoc = Nothing
rs.MoveNext
Next
Leave:
On Error Resume Next
If Not rs Is Nothing Then rs.Close
If Not wDoc Is Nothing Then wDoc.Close wdDoNotSaveChanges
If Not wApp Is Nothing Then wApp.Quit wdDoNotSaveChanges
On Error GoTo 0
Exit Sub
Trap:
MsgBox Err.Description, vbCritical
Resume Leave
End Sub
我正在尝试使用 Microsoft Access 填写带有书签文本表单域的 word 文档,然后将它们导出为 PDF。我正在努力在 Access 中生成始终如一的 Visual Basic 代码。我继续收到关于被锁定无法编辑的 word 文档的错误。不确定如何进行
我目前拥有的代码
Public Sub ExportToMGR()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim rs As DAO.Recordset
Set wApp = New Word.Application
Set wDoc = wApp.Documents.Open("C:\filepath\doc.docx")
Set rs = CurrentDb.OpenRecordset("Detail Report - Individuals")
If Not rs.EOF Then rs.MoveFirst
Do Until rs.EOF
wDoc.Bookmarks("FullName1").Range.Text = Nz(rs!ClientName, "")
wDoc.Bookmarks("FullName2").Range.Text = Nz(rs!ClientName, "")
wDoc.SaveAs2 "C:\filepath\" & "firstTest.docx"
rs.MoveNext
Loop
End Sub
欢迎来到 SO。
您不应打开 Word 文档,而应创建一个 Word 模板 (.dotx) 并通过调用 .Add()
方法将其添加到文档集合中。
文档填满数据后,需要调用.ExportAsFixedFormat()
方法保存为PDF。
请参阅下面的示例。
Option Explicit
Private Sub RunMailMerge_Click()
On Error GoTo Trap
Const TEMPLATE_PATH As String = "YourTemplateFolder\WordTemplate.dotx"
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim rs As DAO.Recordset
Dim idx As Long
Set wApp = New Word.Application
wApp.Visible = False
Set rs = CurrentDb.OpenRecordset("Detail Report - Individuals")
If rs.EOF Then GoTo Leave
With rs
.MoveLast
.MoveFirst
End With
For idx = 1 To rs.RecordCount
Set wDoc = wApp.Documents.Add(TEMPLATE_PATH)
With wDoc
.Bookmarks("FullName1").Range.Text = Nz(rs!ClientName, vbNullString)
.Bookmarks("FullName2").Range.Text = Nz(rs!ClientName, vbNullString)
.ExportAsFixedFormat "DocumentPathWithExtension.pdf", wdExportFormatPDF, False, wdExportOptimizeForOnScreen
.Close wdDoNotSaveChanges
End With
Set wDoc = Nothing
rs.MoveNext
Next
Leave:
On Error Resume Next
If Not rs Is Nothing Then rs.Close
If Not wDoc Is Nothing Then wDoc.Close wdDoNotSaveChanges
If Not wApp Is Nothing Then wApp.Quit wdDoNotSaveChanges
On Error GoTo 0
Exit Sub
Trap:
MsgBox Err.Description, vbCritical
Resume Leave
End Sub