MS Word VBA:如何在保持格式化的同时用翻译替换每个单词

时间:2012-10-08 15:11:06

标签: word-vba

我有一个word文档,想要用翻译替换每个单词,同时保持所有格式不变。我不能使用“查找和替换”对话框,因为我没有尝试替换一组特定的单词,但我正在替换所有单词。我如何使用VBA做到这一点?

更新 我正在使用Word 2010.到目前为止,我可以使用ActiveDocument.Range.Words属性循环使用单词,但我不知道如何用它的翻译替换这些单词?在替换时,我希望保留所有格式,如字体名称,大小,颜色,背景颜色,下划线,粗体等所有格式选项。

1 个答案:

答案 0 :(得分:0)

我猜你有一系列单词("apple", "book", "cat")和他们的翻译数组("pomme", "livre", "chat")

您的目标是逐个批量更改单词。

所以你需要一个循环。这是可能有用的循环(如果我正确理解你的问题)。

对两个阵列进行批量更改

Option Explicit
Sub replaceArrayForArray()
'
'to create array use prefix\suffix and replacing tool http://textmechanic.com/
'
'
findArray = Array("apple", "book", "cat")
replArray = Array("pomme", "livre", "chat")

For i = 0 To UBound(findArray)
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = findArray(i)
        .Replacement.Text = replArray(i)
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute replace:=wdReplaceAll
Next i
End Sub

如果您使用数字并且您必须批量更改数字而不重叠,则可能会出现更多难以解决的问题。使用此处或多或少描述的相同宏的方法: MS Word Macro to increment all numbers in word document