Excel VBA宏 - 用Excel中的255以上的句子替换Microsoft Word上的引用词

时间:2017-09-29 21:04:36

标签: excel excel-vba ms-word vba

我想在Word上用一个大于255个单词的段替换一个参考单词[Property Manager Notes]。会有更多这样的参考文献。

有人可以帮忙吗。

以下是获得想法的图片:

[picture

这是我正在使用的代码

 Dim objWord
   Dim objDoc
   Dim oCell  As Integer
  Sub Replacing_excel_word()

 Sheets("Work").Select

   Set objWord = CreateObject("Word.Application")
   Set objDoc = objWord.Documents.Open("C:\Users\Sai\Desktop\xyz.docx")

objWord.Visible = True

objWord.Activate

For oCell = 1 To 50

from_text = Sheets("Work").Range("A" & oCell).Value
to_text = Sheets("Work").Range("B" & oCell).Value

With objWord.ActiveDocument
    Set myRange = .Content
    With myRange.Find
        .Execute FindText:=from_text, ReplaceWith:=to_text, Replace:=1
    End With
End With

Next oCell

End Sub

1 个答案:

答案 0 :(得分:0)

我刚刚解决了这个问题。在代码的末尾,您需要创建一个函数:

Function Replacement255(wRng, field, content)


        With wRng.Find
            .text = field   '>> enter the text to be searched and replaced
            .MatchWholeWord = False
            .MatchWildcards = False

          If Len(content) > 255 Then
            .Wrap = wdFindContinue
              cnt = 0
              Do
                 strFragment1 = Mid(content, cnt + 1, 230)
                 cnt = cnt + 230
                 If Len(strFragment1) > 0 Then strFragment1 = strFragment1 & "@@@@@@@@@@"
                 .Replacement.text = strFragment1
                 .Execute , , , , , , , , , , wdReplaceOne
                 .text = "@@@@@@@@@@"
              Loop While Len(strFragment1) > 0
          Else
            .Replacement.text = text  '>> enter column location of the text from excel
                .Wrap = wdFindStop
              .Execute Replace:=wdReplaceOne
          End If

          End With

End Function

然后,在您的代码中,您需要使用此功能:

 Replacement255 wRng, field, content.Value

其中:

字段:要替换ex的文本。 " #Enter here#" 内容:用ex替换的文本。 Sheet1.Cells(MyRow, "M")

我希望它可以帮到你!