MS Word:替换用户表单中的书签文本而不是使用 VBA 添加

MS Word: Replace bookmark Text in a Userform instead of Adding using VBA

VBA 这里是新手。

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

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

Private Sub EditFormButt_Click()
    CoverLetterForm.Show
End Sub

表单当前已预填占位符文本。我希望我的团队能够替换 文本。现在,发生的事情是,当他们单击我的 "OK" 按钮(代码遵循)时,占位符文本仍然存在,并添加了他们的新文本。

例如:

To: Mr. Paul Daniels Ms. Sarah Jones
21 New Order Street
London
England

Dear Mr. Paul Daniels Ms. 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

感谢您的帮助:)

好的,我想我已经找到了答案,但如果有人有更优雅的解决方案,我洗耳恭听!

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

更简单:

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