我正在尝试用包含换行符的 Excel 单元格内容替换 Word 文件中的文本。查找部分必须区分大小写。我尝试了 2 种不同的方法,但它们都无法完全发挥作用。
在选项 1 中,“查找”部分区分大小写,但在替换时,换行符会被替换为方块。
在选项 2 中,替换正确完成并保留 Excel 单元格中包含的换行符,但“查找”部分不区分大小写。
我尝试过将两者结合起来,但没有成功。有什么想法吗?我已经被这个问题困扰好几天了。
VBA 代码选项 1:
Set ObjWord = CreateObject("word.Application")
ObjWord.documents.Open "C:\Example.docx"
ObjWord.Visible = True
With ObjWord.ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "Insert Address"
.Replacement.Text = Sheet1.Range("C2")
.Forward = True
.Wrap = 1
.Format = False
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2
End With
结果选项 1:(问题是换行符被方块取代)。
测试行业[]Test Road, 51, 150001 VBA, USA[]收件人:Macro先生[]电话:+1 666 666 666[]电子邮件:[电子邮件保护]
VBA 代码选项 2:
Set ObjWord = CreateObject("word.Application")
ObjWord.documents.Open "C:\Example.docx"
ObjWord.Visible = True
FindText = "Insert Address"
ReplaceText = Sheet1.Range("C2")
ObjWord.Selection.Move 6, -1 'moverse al principio del documento
ObjWord.Selection.Find.Execute FindText:=FindText
ObjWord.Selection.Text = ReplaceText
ObjWord.Selection.Find.Execute FindText:=FindText
结果选项 2(问题是“查找”不区分大小写):
检测行业
Test Road, 51, 150001 VBA,美国
收件人:马克先生
电话:+1 666 666 666
电子邮件:[电子邮件保护]
最后,我找到了让替换区分大小写的方法,同时保留单元格的换行符,但现在我意识到宏在第一次查找时停止,我需要替换所有内容。问题是我不能使用“While”,因为 Word 文档应该保留在跟踪更改中,因此使用 While 会创建一个无限循环。有什么办法吗?
ObjWord.Selection.Move 6, -1 'moverse al principio del documento
ObjWord.Selection.Find.Execute FindText:=FindText, MatchCase:=True
ObjWord.Selection.Text = ReplaceText
ObjWord.Selection.Find.Execute FindText:=FindText, MatchCase:=True
谢谢您的帮助。
答案1
解决方案如下:
Objword.ActiveDocument.ShowRevisions = False
ObjWord.Selection.Move 6, -1 'move to the beginning of document
ObjWord.Selection.Find.Execute FindText:=FindText, MatchCase:=True
While objword.Selection.Find.Found = True
ObjWord.Selection.Text = ReplaceText
objword.Selection.Move 6, -1
ObjWord.Selection.Find.Execute FindText:=FindText, MatchCase:=True
Wend
objword.ActiveDocument.ShowRevisions = True