首页 > 解决方案 > MS Word:替换用户表单中的书签文本而不是使用 VBA 添加

问题描述

VBA新手在这里。

我刚刚创建了一个用户表单,允许我的团队创建求职信。

下面的按钮出现在文档正文中的“说明”部分。当他们点击它时,它会显示我需要填写的表格。

Private Sub EditFormButt_Click()
    CoverLetterForm.Show
End Sub

表单当前具有预填充的占位符文本。我希望我的团队能够替换文本。现在,发生的情况是,当他们单击我的“确定”按钮(要遵循的代码)时,占位符文本仍然存在,并且他们的新文本被添加。

例如:

致: Paul Daniels先生 Sarah Jones 女士
21 New Order Street
London
England

亲爱的 Paul Daniels先生 Sarah Jones 女士

Sarah Jones 女士是占位符文本,Paul Daniels 先生是更新后的文本。

我需要任何新条目来替换占位符文本中的任何内容,但不要删除尚未更新的任何内容,因为有时,他们可能只想更改收件人的姓名而不是人员的地址。如果他们想更正拼写错误,而不必开始一个全新的文档,这也很有用。

这是我的 OKButt 代码:

Private Sub OKButt_Click()
    Dim bmRecName As Range
    Set bmRecName = ActiveDocument.Bookmarks("bmRecName").Range
    bmRecName.Text = Me.RecName.Value
    Dim bmRecAddress As Range
    Set bmRecAddress = ActiveDocument.Bookmarks("bmRecAddress").Range
    bmRecAddress.Text = Me.RecAddress.Value
    CoverLetterForm.Hide
End Sub

谢谢你的帮助 :)

标签: vbams-worduserform

解决方案


好的,我想我已经找到了答案,但是如果有人有更优雅的解决方案,我全神贯注!

Private Sub OKButt_Click()
    Dim bmRecName As Range
    Set bmRecName = ActiveDocument.Bookmarks("bmRecName").Range
    bmRecName.Text = Me.RecName.Value
    ActiveDocument.Bookmarks.Add "bmRecName", bmRecName
    Dim bmRecAddress As Range
    Set bmRecAddress = ActiveDocument.Bookmarks("bmRecAddress").Range
    bmRecAddress.Text = Me.RecAddress.Value
    ActiveDocument.Bookmarks.Add "bmRecAddress", bmRecAddress
    CoverLetterForm.Hide
End Sub

基本上添加以下代码:

ActiveDocument.Bookmarks.Add "bmRecAddress", bmRecAddress

推荐阅读