【问题标题】:VBA Function Replace to Word 2010VBA 函数替换为 Word 2010
【发布时间】:2018-08-14 01:09:26
【问题描述】:

这是我在 Word 中的第一次 VBA 尝试。我想查找多个单词匹配并将它们全部替换为我指定的字符串,最好来自外部文档。在 200 页的文档中,我想用 1000 个不同的翻译替换 1000 个不同的单词。现在我被卡住了,因为我无法让这个功能在我的 Word 2010 文本上工作。这段代码是否正确,我该如何实现?

Function R(StrFind As String, StrReplace As String)
  Application.ScreenUpdating = False
  With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = StrFind
    .Replacement.Text = StrReplace
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = True
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
  End With
  MsgBox R("q", "a")
  MsgBox R("w", "a")
  MsgBox R("e", "a")
  MsgBox R("r", "a")
  MsgBox R("t", "a")
  MsgBox R("y", "a")
  ActiveDocument.UndoClear
  Application.ScreenUpdating = True
End Function

【问题讨论】:

  • 你为什么使用...函数...?
  • 显示你想插入的代码
  • @DisplayName 我有 200 页英文文档,我想用保加利亚语翻译替换最常用的英文单词。
  • @K.Dᴀᴠɪs 我也可以用 if else 来实现。我的函数是它不能作为宏工作的问题吗?用“a”替换所有“q”、“w”、“e”、“r”、“t”、“y”只是一个例子。
  • 但为什么不是 Sub?

标签: string vba replace ms-word


【解决方案1】:

您需要重组代码以使其正常工作。第一个是包含所有调用的方法,第二个是执行替换的方法。像这样的:

Sub En2Bu
  R "q", "a"
  R "w", "a"
  R "e", "a"
  R "r", "a"
  R "t", "a"
  R "y", "a"
  ActiveDocument.UndoClear
  Application.ScreenUpdating = True
End Sub

Sub R(StrFind As String, StrReplace As String)
  Application.ScreenUpdating = False
  With Selection.Find ' Are you sure you want Selection here?
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = StrFind
    .Replacement.Text = StrReplace
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = True
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
  End With
End Sub

Selection.Find 可能是个错误?你想只在选定的文本中这样做吗?

【讨论】:

  • 那我搞错了。它应该在整个 200 页文档中搜索匹配项,而不仅仅是选择文本。搜索第一个单词,用它的翻译替换文档中的任何地方。搜索第二个单词,用它的翻译替换文档中的任何地方。直到最后一个字,它的翻译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
  • 2014-07-15
  • 2021-07-21
相关资源
最近更新 更多