RANG 范围限制,导致不能遍历到期望的位置
来源:互联网 发布:薛之谦淘宝店叫什么 编辑:程序博客网 时间:2024/06/04 13:45
目的:在遍历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.Quit
End 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 aWord
3、改后如下。
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 ---------
- RANG 范围限制,导致不能遍历到期望的位置
- HTML5的Rang对象
- Oracle varchar2的范围限制
- UIDatePicker的时间范围限制
- 通过限制变量的范围
- 限制移动范围的拖放
- 限制对话框的移动范围
- 限制范围的拖拽
- Cassandra下的Rang查询
- Arcgis engine PageLayout限制IMapFrame范围和位置
- iOS 隐藏tabbar会导致底部tabbar的位置的空间不能被点击响应
- .net的session详解 存储模式 存到数据库中 使用范围与大小限制 生命周期
- .net的session详解 存储模式 存到数据库中 使用范围与大小限制 生命周期
- IOS--限制位置的算法
- selinux限制了文件导致系统不能读取解决方案
- 窗口拖动的大小范围限制
- 限制QLineEdit的数值输入范围
- C#数值的大小范围限制处理.
- SQL优化
- apue第二章
- PostGreSql 手动安装
- DDR内存布线指导
- jquery 的排序插件
- RANG 范围限制,导致不能遍历到期望的位置
- Ubuntu无线密码破解--aircrack-ng
- peekmessage
- 项目管理的三个重要概念:检查点、里程碑、基线
- 在VC++中读写INI文件
- Symbain平台下汉字转化成拼音
- Java SWT
- 功能测试_界面操作关注点
- Android: Android 3.0 SDK发布,速度更新之