用单词中的超链接列表替换所有文本单词

时间:2016-08-19 16:13:10

标签: text replace hyperlink ms-word word-vba

我有许多冗长的Word 2010文档,其中包含许多首字母缩略词,所有这些文档中都有许多相同的首字母缩略词。我还有一个这些缩写词的垂直列表,这些首字母缩略词在每个文档中以超链接格式以表格格式(在每个文档的末尾)。

e.g。超链接列表:

AA1
AA2
AA3
...

我的Word 2010宏观体验非常少,但想知道是否有可能像这样工作的宏:

  1. 在任何给定的文档中,当我将光标放在列表的顶部时(即在具有超链接内容的单元格中#34; AA1和#34;),它将选择第一个单元格的内容,然后将其复制到剪贴板,然后对所有文本格式化的单词" AA1"进行全局替换(使用^ c我猜)。在文档中使用超链接格式化的单词" AA1" (假设它找到了要替换的词)。

  2. 然后它将向下移动到第二个单元格,其超链接内容为" AA2"并替换所有" AA2"文档中带有超链接的文本" AA2"值等等,直到超链接列表中的所有超链接单词都替换了文档中的所有文本单词。

  3. 这可以吗?

1 个答案:

答案 0 :(得分:1)

如果我理解你的意思正确[问题不清晰和可视]这是你需要的基本代码:

Sub replaceHyperLink()
Dim searchText As String
searchText = "AA1"
    Selection.Find.ClearFormatting
    With Selection.Find
        .text = ""
        .Replacement.text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

Do
    With Selection.Find
    .text = searchText
    End With

    Selection.Find.Execute
If Selection.Find.Found = True Then
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
        "stackoverflow.com/", SubAddress:="", ScreenTip:="", TextToDisplay:=searchText
Else
Exit Do
End If
Loop
End Sub
  • 你必须循环使用AA2,AA3,....
  • 如果您只想超链接一列表,请选择该列 列然后将其复制到新文档中(代码用于执行此操作很简单) 然后进行操作并再次将其粘贴到选定的列中。

如果你想从单元格中获取文本:

Dim cellText As String
For i = 1 To ActiveDocument.Tables(1).Rows.Count
ActiveDocument.Tables(1).Rows(i).Cells(3).Select
cellText = Selection.text
'do what you want with text
Next i