我正在尝试在WORD表中创建表。当然,在finall程序中,它将是动态的,这不在本示例中。

这是我的示例代码。

 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,1)中。第二个表也有2行和1列,但第三个表有3行和1列。但是,无论我是否在自己的单元格中放了什么,我都没有得到我想要的第二和第三张表,我总是只看到我放在该表中的最后一个字符串。

更重要的是,如果我在第一个表中放入1行和2列的表,那比正常情况要多。

你能帮助我吗。

谢谢Rok

最佳答案

在用代码创建这些表时遇到问题,请执行以下操作:


打开单词
记录一个新的宏
记录时,建立所需的表,然后停止记录。
在Visual Basic编辑器中查看您的宏代码,然后尝试将其转换为OLE自动化代码(这并不难,几乎一样)

10-08 15:53