【发布时间】:2019-07-07 18:27:29
【问题描述】:
我以前一直使用一些 VBA 将字段从 Access 传递到 Word 文档,直到遇到 255 个字符的限制。来自 site 的帮助使我现在使用书签而不是表单字段。
我最初在 Word 上填写了许多不同的字段,在某些情况下,我在 Word 文档的两个位置使用 Access 中的相同数据。我通过调用来实现这一点:
.FormFields("txtReasonforReward").Result = Me![Reason for Reward]
.FormFields("txtReasonforReward2").Result = Me![Reason for Reward]
由于我现在有一种不同的方式来填写“奖励原因”框,以规避字符限制(下面的代码),我不知道如何填写“txtReasonforReward2”。我确实有几个实例,我添加了第二个字段并在最后添加了一个 2 ......我不相信这是最好的方法,所以如果有人可以建议如何使用 FormFields 和书签来实现这一点,我真的很感激。
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set doc = objWord.Documents.Open(***path to file***, , True)
Dim rng As Word.Range
Dim x As String
With doc
.FormFields("txtFirstName").Result = Me![First Name]
.FormFields("txtLastName").Result = Me![Last Name]
`examples cut for clarity...
.FormFields("txtHRID").Result = Me![ID]
.FormFields("txtPeriod").Result = Me![Period]
If doc.ProtectionType <> wdNoProtection Then
doc.Unprotect
End If
Set rng = doc.Bookmarks("txtReasonforReward").Range
rng.MoveStart wdCharacter, -1
x = rng.Characters.First
rng.FormFields(1).Delete
rng.Text = x & Me![Reason for Reward]
doc.Protect wdAllowOnlyFormFields, True
.Visible = True
.Activate
End With
objWord.View.ReadingLayout = True
【问题讨论】: