RANG 范围限制,导致不能遍历到期望的位置

    技术2022-05-20  38

    目的:在遍历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 ---------

     


    最新回复(0)