目的:在遍历word文档 ,当发现字符“普通地热水洗井循环时间”,在其后插入数据问题:RANG 选定的范围应该有限制,不能遍历到字符“普通地热水洗井循环时间”处有什么解决方法吗 ,如果不用RANG ,有其他方法吗 。有问题的代码:Set RangeTemplate = objWordTemplate.Range(Start:=0, End:=objWordTemplate.Range.End)附代码:Sub fun1() '打开的Excel文件路径 Dim strCurPath As String '新生成的文件名称 Dim strFileName As String Dim objWordApp As Word.Application Dim objWordTemplate As Word.Document Dim RangeTemplate As Word.Range Dim i As Integer i = 0 strFileName = Trim(Sheets(strSheetInputName).Range("B5").Value) & "_" & Trim(Sheets(strSheetInputName).Range("A9").Value) & "_" & Format(Now, "yyyymmdd") '关闭宏提示 Application.DisplayAlerts = False Set objWordApp = CreateObject("Word.Application") '查看 Documents 集合以判定名为“TemplateWord.doc”的文档是否已打开。如果该文档包含在 Documents 集合中,则激活该文档;否则,打开该文档。 Set objWordTemplate = objWordApp.Documents.Open(ThisWorkbook.Path & "/TemplateWord2.doc") '遍历新生成的文档,定位到“普通地热水洗井循环时间”,在其后加入 'Set RangeTemplate = objWordTemplate.Range(Start:=0, End:=objWordTemplate.ActiveWindow.Selection.End) 选定范围太小 'Set RangeTemplate = objWordTemplate.Range(Start:=objWordTemplate.Paragraphs(1).Range.Start, End:=objWordTemplate.Paragraphs(50).Range.End) 选定范围太小 ' Set RangeTemplate = objWordTemplate.Range(Start:=0, End:=100000) '数值超出范围 Set RangeTemplate = objWordTemplate.Range(Start:=0, End:=objWordTemplate.Range.End) For Each aWord In RangeTemplate.Words If aWord.Text = "普通地热水洗井循环时间" Then aWord.InsertAfter "New text " End If Next aWord 'MsgBox "There are " & objWordTemplate.ActiveWindow.Selection.Words.Count & " words." '' Documents("TemplateWord.doc").Close SaveChanges:=wdDoNotSaveChanges' objWordTemplate.Close objWordApp.QuitEnd Sub------------------------问题解决 begin---------
问题解决总结如下1、objWordTemplate.Range(Start:=0)可以包含全文,我只看调试的监控器以为只选定一个小的范围(建议用debug.print myRang)2、用如下遍历,有问题 ,问题在哪,不知道。改用rang.find.excute If aWord.Text = "普通地热水洗井循环时间" Then aWord.InsertAfter "New text " End If Next aWord3、改后如下。 Set myRange = objWord.Content Debug.Print myRange.Text myRange.Find.ClearFormatting myRange.Find.Execute findText:="普通地热水洗井循环时间", Forward:=True If myRange.Find.Found = True Then myRange.InsertAfter " This is now the last sentence in paragraph one."但又出现问题问题:方法”Excute”作用于”Find”对象时失败原因:声明造成的 dim myRange as word.rang 解决:将这个声明注释掉不能这样声明 ,有点奇怪到此问题解决------------------------问题解决 end ---------