从Delphi XE开始使用som自动执行Word时,我同时打开两个文档。我想将一个文档的给定范围的内容复制到另一个文档中的另一个范围。我怎样才能做到这一点?OLE自动化:如何在不使用剪贴板的情况下在Word文档之间复制文本
考虑下面的代码:
procedure TForm1.ManipulateDocuments;
var
vDoc1,vDoc2 : TWordDocument;
vFilename : olevariant;
vRange1,vRange2 : Range;
begin
vDoc1 := TWordDocument.Create(nil);
vDoc2 := TWordDocument.Create(nil);
try
vFilename := 'c:\temp\test1.doc';
vDoc1.ConnectTo(FWordApp.Documents.Open(vFilename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam));
vFilename := 'c:\temp\test2.doc';
vDoc2.ConnectTo(FWordApp.Documents.Open(vFilename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam));
vRange1 := GetSourceRange(vDoc1);
vRange2 := GetDestinationRange(vDoc2);
vRange2.CONTENTS := vRange1.CONTENTS; //What should I substitute for CONTENTS?
finally
vDoc1.Free;
vDoc2.Free;
end;
end;
有什么我可以代替内容是什么?我不能使用文本,因为我想复制格式,书签,字段代码等。我必须以另一种方式完成这些任务吗?有什么建议么?
我已经注意到这些函数(exportfragment/importfragment),它们对我的需要来说是完美的。不幸的是,Word 2007不适合我。我们的解决方案需要运行Word 2003的用户,可能甚至更早,这些功能不可用。不过谢谢。到目前为止最好的建议:-) – 2011-03-24 07:13:58
更新:由于没有其他答案,我会接受这个最好的。不过,它让我感到害怕,没有涉及剪贴板或使用外部文件的方法,没有好的办法。这似乎很基本: -/ – 2011-04-04 07:38:12
@Svein - 我已经用另一种方法更新了答案。如果它仍然不能令人满意,我会建议在标签中加入'msword'并且暂时保持这个问题不被回答。 – 2011-04-05 22:41:30