WORDで表の中に表を作ろうとしています。もちろん、最終的なプログラムでは動的になりますが、このサンプルにはありません。
これが私のサンプルコードです。
var
aTable, bTable, cTable : OLEVariant;
begin
m_WordApplication := CreateOleObject('Word.Application') ;
m_WordDocument := m_WordApplication.Documents.Add;
aTable := m_WordDocument.Tables.Add(m_WordApplication.Selection.Range, 2, 1);
aTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
bTable := m_WordDocument.Tables.Add(aTable.Cell(1, 1).Range, 2, 1);
bTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
cTable := m_WordDocument.Tables.Add(aTable.Cell(2, 1).Range, 3, 1);
cTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
m_WordDocument.SaveAs('C:/test.doc', False) ;
m_WordApplication.Quit(False);
まず、カーソルの位置に新しいテーブル (2 行、1 列) を配置し、次に最初のテーブルのセル (1,1) に 2 番目のテーブル、セル (2,1) に 3 番目のテーブルを配置しようとします。2 番目のテーブルにも 2 行と 1 列がありますが、3 番目のテーブルには 3 行と 1 列があります。しかし、私が望むものの代わりに、セルに何かを入れたかどうかに関係なく、1行だけの2番目と3番目のテーブルを取得します。
さらに、最初のテーブル内に 1 行 2 列のテーブルを配置すると、すべてが正常になります。
手伝って頂けますか。
ありがとう、ロク