关于WORD替换书签的问题,高手请进(100分)

  • 主题发起人 主题发起人 deadren
  • 开始时间 开始时间
D

deadren

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个过程用指定的文字替换WORD中的书签
procedure writetobookmark(bookmarkname: string; bookmarktext: string);
var
m: Integer;
begin
for m := 1 to doc.Bookmarks.Count - 1 do
begin
if bookmarkname = doc.Bookmarks.item(m).name then
begin
doc.Bookmarks.item(m).Select;
doc.ActiveWindow.Selection.TypeText(bookmarktext);
end;
end;
end;

然后我调用这个过程,但是替换的时候替换了几个以后,就会出错"指定的集合中找不到成员"
我怀疑是书签位置的问题,不知道哪位达人知道如何解决.
 
我是这么替换
DocHandle.Application.Selection.goto(What:=-1,Name:=BookMarkName);
DocHandle.Application.Selection.Text:= BookMarkValue

没出现问题
//wdGoToBookmark = -1
 
var
OleWhat,OleWhich,OleCount,OleName:OleVariant;
FRow,I:Integer;
FLevel:Integer;
begin
OleWhat:=wdGoToBookmark; OleName:='Instrument';//书签名字,程序没有问题,这个程序我都成为商品了。。。^_^
OleWhich:=emptyenum; OleCount:=emptyenum;
Word2000.Selection.GoTo_(OleWhat,OleWhich,OleCount,OleName);
FLevel:=Word2000.Selection.Tables.Item(1).NestingLevel;
if FLevel>1 then
Word2000.Selection.Tables.Item(1).Delete;
 
已经解决,如下
///////////////////////替换书签////////////////////////////////////
procedure writetobookmark(bookmarkname: string; bookmarktext: string);
var
m: Integer;
begin
for m := 1 to myapp.ActiveDocument.Bookmarks.Count do
begin
if myapp.ActiveDocument.Bookmarks.item(m).name = bookmarkname then
begin
myapp.ActiveDocument.Bookmarks.item(m).Select;
doc.ActiveWindow.Selection.TypeText(bookmarktext);
break;//关键在这里
end;
end;
end;
///////////////////////替换书签完//////////////////////////////////
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
656
import
I
后退
顶部