OLEオートメーションを使用してWord文書を操作しています。を使用してセルのコンテンツを取得できます
Table.Cell(rowIndex、colIndex).Range.FormattedText
OleVariantを返します。適切なプロパティを使用しているかどうかわからず、フォーマットを失うことなくこのテキストをTRichEditに貼り付ける方法がわかりません(上付きテキストなど)
リッチエディットとボタンだけでモックアップフォームを設定しました。以下のコードはこれを達成するための最良の方法ではないかもしれませんが、WinXP上のWord2007で動作します。
uses Word_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
wordApp : _Application;
doc : WordDocument;
table : Word_TLB.Table;
filename : OleVariant;
aRange : Range;
aWdUnits : OleVariant;
count : OleVariant;
begin
//need to back up 2 characters from range object to exclude table border.
//Remove 1 character only if using selection
count := -2;
aWdUnits := wdCharacter;
filename := '"H:\Documents and Settings\HH\My Documents\testing.docx"';
RichEdit1.Clear;
try
wordApp := CoWordApplication.Create;
wordApp.visible := False;
doc := wordApp.documents.open( filename, emptyparam,emptyparam,emptyparam,
emptyparam,emptyparam,emptyparam,emptyparam,
emptyparam,emptyparam,emptyparam,emptyparam,
emptyparam,emptyparam,emptyparam,emptyparam );
table := doc.tables.item(1);
aRange := table.cell(3,1).Range;
aRange.MoveEnd(aWdUnits, count); //This is needed so border is not included
aRange.Copy;
RichEdit1.PasteFromClipboard;
RichEdit1.Lines.Add('');
finally
wordApp.quit(EmptyParam, EmptyParam, EmptyParam);
end;
end;
そして、これは結果です: 。
唯一のことは、リッチエディットに1行として表示される複数行のテキストです。
この問題を OLE オートメーションで解決することを断念しました。TRichView は必要な機能を提供しますが、無料ではありません...