如何在Word的书签处替换成图片?(80分)

  • 主题发起人 主题发起人 laiyongjun
  • 开始时间 开始时间
L

laiyongjun

Unregistered / Unconfirmed
GUEST, unregistred user!
var
BookMark_Name : OLEVariant;
begin
BookMark_Name := 'bzr';
if WordDocument1.BookMarks.Exists(BookMark_Name) then
begin
WordDocument1.BookMarks.Item(BookMark_Name).Select;
WordDocument1.Bookmarks.Item(BookMark_Name).Range.Text := '中国';
end;
end;

如果要想在'bzr'这里替换成图片,怎样实现?我用:
WordDocument1.Bookmarks.Item(BookMark_Name).Range.InsertFile(ExtractFileDir(paramstr(0))+'/1.bmp', EmptyParam, EmptyParam, EmptyParam, EmptyParam);
无法实现,如果能插进去图片,那如何控制图片的格式(居中,居于文字上方)?
 
我在线等待!!谢谢大家了。
 
我在等米下锅呀!!如果分不够,问题解决了,我再奉上。
 
FPicture:=WordDocument1.activedocument.InlineShapes.AddPicture(ExtractFileDir(paramstr(0))+'/1.bmp',False, True );
FPicture.ConvertToShape.select; //转成可移动模式...
Myword1.Selection.ShapeRange.WrapFormat.Type:=wdWrapNone; //或等于3,无环绕时才能衬于文字下方或浮于上方
WordDocument1.Selection.ShapeRange.ZOrder(4);//
 
myid0602
谢谢你!
我用Word不是用滞后绑定的方法,而是引入类型库,代码如下:
try
WordApplication1.Connect ;
except
MessageDlg('没有安装Word',mterror,[mbok],0);
abort;
end;
WordApplication1.Visible := True;

WordApplication1.Documents.Open(.....);
WordDocument1.ConnectTo(WordApplication1.Documents.Item(1));

因为这种速度要快得多,这种如果要插入图片时怎样操作?
 
感谢myid0602,我在试时发现不能把图片插到指定标签位置。
======================
//创建一个word对象
wordApp := CreateOleObject('Word.Application');
wordApp.Visible := True;
//创建一个word文档
if Opendialog1.Execute then
wordDoc := wordApp.Documents.Open(Opendialog1.FileName);
BookMark_Name := 'shr';


wordApp.selection.goto(what:=wdgotobookmark, name:=bookmark_name);
FPicture := wordApp.activedocument.Range.InlineShapes.AddPicture(ExtractFileDir(paramstr(0))+'/1.bmp', False, True);//这就是加放入图片的语句
FPicture.ConvertToShape.select; //转成可移动模式...
wordApp.Selection.ShapeRange.WrapFormat.Type := wdWrapTopBottom; //嵌入型
wordApp.Selection.ShapeRange.ZOrder(2);


=================
shr是标签,不能把图片插到指定标签位置,不知道为什么?
 
谢谢大家的支持,现在可以插入了,代码如下:

BookMark_Name := 'tp'; //插入图片的位置
if WordDocument1.BookMarks.Exists(BookMark_Name) then
begin
WordDocument1.BookMarks.Item(BookMark_Name).Select;

LinkToFile := False;
SaveWithDocument := True;

WordApplication1.Selection.InlineShapes.AddPicture(ExtractFileDir(paramstr(0))+'/1.bmp', LinkToFile, SaveWithDocument, EmptyParam);
end;

================
现在的新问题:怎样控制环绕和居中?????
注意是这种WordApplication1.Connect;打开的Word,而不是wordApp := CreateOleObject('Word.Application');打开的Word。
 
问题已经解决:

BookMark_Name := 'tp'; //插入图片的位置
if WordDocument1.BookMarks.Exists(BookMark_Name) then
begin
WordDocument1.BookMarks.Item(BookMark_Name).Select;

LinkToFile := False;
SaveWithDocument := True;

FPicture := WordApplication1.Selection.InlineShapes.AddPicture(ExtractFileDir(paramstr(0))+'/1.bmp', LinkToFile, SaveWithDocument, EmptyParam);
WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;

FPicture.ConvertToShape.Select; //转成可移动模式...
WordApplication1.Selection.ShapeRange.WrapFormat.type_ := wdWrapNone; //无环绕 这样才能衬于文字下方或浮于上方
WordApplication1.Selection.ShapeRange.ZOrder(4); //显示在文字上方
end;
 
接受答案了.
 

Similar threads

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