從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