質問

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列)を配置し、次に2番目のテーブルをセル(1,1)に、3番目を最初のテーブルのセル(2,1)に配置しようとします。2 番目のテーブルにも 2 行 1 列がありますが、3 番目のテーブルには 3 行 1 列があります。しかし、私が望むものの代わりに、セルに何かを入れたかどうかに関係なく、1行だけの2番目と3番目のテーブルを取得しました。常にそのテーブルに入れた最後の文字列だけが表示されます。

さらに、最初のテーブルの中に1行2列のテーブルを配置すると、すべてが正常になります。

手伝ってもらえますか。

ありがとう、ロク

役に立ちましたか?

解決

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

  • オープンワード
  • 新しいマクロを記録する
  • 記録中に必要なテーブルを構築し、記録を停止します。
  • Visual Basic Editor でマクロ コードを表示し、それを OLE オートメーション コードに変換してみます (それほど難しいことではありません。ほとんど同じです)。

他のヒント

aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;

あなたはBTABLE&cTableのために同じことを行う必要があります。

あなたは以上1行/列を追加すると、それを分離するための境界線が必要になります(すなわち、他のから別のまたは別の1列から1行を分離する)。

この情報がお役に立てば幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top