2

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 列のテーブルを配置すると、すべてが正常になります。

手伝って頂けますか。

ありがとう、ロク

4

2 に答える 2

3

これらのテーブルをコードで作成する際に問題が発生した場合は、次の操作を行います。

  • ワードを開く
  • 新しいマクロを記録する
  • 記録中に、必要なテーブルを作成してから、記録を停止します。
  • Visual Basic Editor でマクロ コードを表示し、それを OLE 自動化コードに変換してみます (これはそれほど難しくなく、ほとんど同じです)。
于 2009-07-17T06:53:43.230 に答える
0
aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;

bTable と cTable についても同じことを行う必要があります。

複数の行/列を追加する場合、境界線で区切る必要があります (つまり、1 つの行を別の行から分離する、または 1 つの列を別の列から分離する)。

お役に立てれば。

于 2009-07-17T06:30:44.307 に答える