关于Word:如何判断是一个空文档等(45分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
另外,知道在word文档中的位置后如何将该词(字)加亮显示
 
把Word中的光标移到文章最未,此时光标的值为(1,1),即为空文档

"知道在word文档中的位置后如何将该词(字)加亮显示"

不明白。是选中它们吗?
 
我现在在上课 :)
 
ting, Automation 部分还没有学呢.
 
是说选中吗?
 
是的,选中。
比如我从n个word文件中检索某词后,再打开某个检索后的文档,希望检索到的词都是
选中状态(现在已经知道了位置)
 
只要的两句话:
Word_Ole.Selection.Find.Text := '搜索';
Word_Ole.Selection.Find.Execute;
 
这个更好!
doc_handle.Application.Selection.Find.Text := '搜索';
doc_handle.Application.Selection.Find.Execute;
 
搜索是用另外的程序完成的。
因为word的比较慢,而且不能同时搜索多个文件
 
这估计比较困难。word怎么知道呢?你发送什么消息了吗?
另,你的搜索用什么方法?能否告知思路?
 
如果你都知道了确切位置,那么不妨使用类似下面的语句:
Selection.MoveLeft Unit:=wdCharacter, Count:=2, Extend:=wdExtend
不过自我感觉不好,你要打开的是一个搜索的文档呀,使用他的定位功能速度并不见得慢呀。

下面这两句话,就是所有文档中的第一个(当然是光标后的)是“搜索”的单词,然后选中,
除非文档特别大(1个超过M)否则感觉不到速度问题呀。
doc_handle.Application.Selection.Find.Text := '搜索';
doc_handle.Application.Selection.Find.Execute;
 
用word的检索只能定位于第一个。。。但是现在自己用的检索算法不是很成熟,
只能找到要搜索词在所有中文的第几个,将就着用word提供的吧

关于空文档的问题:
觉得要先判断以下VBA中“ActiveDocument.Range(1).Text”是否为空,如果为
空则退出。
加入“If ActiveDocument.Range(1).isnull() then Exit”VB的语法不对
俺不会VB,请帮忙

Sub SendToIndex()
Dim index
Set index = CreateObject("FaoSearchServer.FaoSearchEngine")
index.AddText ActiveDocument.Range(1).Text, Application.ActiveDocument.FullName
Set index = Nothing
End Sub
 
可以定位下一个呀,不过一次只能定位一个,也就是说选中一个,这是很正常的。
一会俺再看看,现在在eat[:D][:D][:D]
 
哦,没执行一次
以下查询第二个
doc_handle.Application.Selection.Find.Execute;
doc_handle.Application.Selection.Find.Execute;
就搜索下一个一次。
而且他可以返回布尔变量表示是否查到。
 
第二个:
index.AddText ActiveDocument.Range(1).Text, Application.ActiveDocument.FullName
如下,不使用Range(1),直接使用Range就可以了。

if Trim(doc_handle.Application.ActiveDocument.Range.Text)='' then
ShowMessage('空文档');
 
第二个问题可能我没有说清楚。
检索功能是封装到com中地。
现在一个应用中,在word中录制宏:
Sub SendToIndex()
Dim index
Set index = CreateObject("FaoSearchServer.FaoSearchEngine")
index.AddText ActiveDocument.Range(1).Text, Application.ActiveDocument.FullName
Set index = Nothing
End Sub
宏调用了com.
要在宏中判断当前文档是否为空,如果空则提示退出(不然word会报错地)
用VBA,不是delphi语法[:)]
 
比划着把VBA中Range(1)改为Range,ok

Word_Ole.Selection.Find.Text := '搜索';可以搜索
doc_handle会出现错误的

我想作出google地网页快照效果。看来现在先得凑活用Word地搜索了

game over,谢谢大家[:)]
 
后退
顶部