从文档参考中获取一个词,并在文档的后面使用它来查找和替换?

时间:2015-12-14 10:24:34

标签: vba ms-word word-vba

我不熟悉VBA,但想建立一个与Mocrosoft Word 2003进行特定操作的宏(是的,我的公司软件仅限于2003年 - 不要问!)。

我有很多关于个人的文件。它们都以文档参考15/3/ARTF/(NAME)开头,其中(NAME)是个人的姓氏,例如15/3/ARTF/JONES

这些文件基于我创建的模板,上面写着“~Name~已通过导航考试”。

如何设置宏来提取文档引用中的名称,并使用该名称查找和替换~Name~(在句子中)?在显示的示例中,我希望句子在完成宏运行时说“琼斯已通过她的导航考试”。

1 个答案:

答案 0 :(得分:2)

假设文档引用是文档中的一个单独的段落(和第一个段落),那么首先要考虑它。如果它遵循您指定的格式,您只需查找最后一次出现的/,在找到的索引后面取名称并执行find-replace以替换所有出现的~Name~

Sub ReplaceNames()
    Dim ref As String
    ref = ActiveDocument.Paragraphs(1).Range.Text

    Dim name As String
    name = Mid(ref, InStrRev(ref, "/") + 1)

    'If name ends with a paragraph, remove it.
    If Right(name, 1) = Chr(13) Then name = Left(name, Len(name) - 1)

    ActiveDocument.Range.Find.Execute "~Name~", MatchCase:=False, ReplaceWith:=name, Replace:=wdReplaceAll
End Sub

请注意,我已插入一项检查,以查看该名称是否包含段落。您不希望在您的文档中出现新的段落; - )