2

我正在尝试在 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 列表,则一切正常。

你能帮助我吗。

谢谢, 洛克

4

2 回答 2

3

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

  • 打开单词
  • 录制新宏
  • 录制时,建立您想要的表格,然后停止录制。
  • 在 Visual Basic 编辑器中查看您的宏代码并尝试将其转换为 OLE 自动化代码(这并不难,几乎相同)
于 2009-07-17T06:53:43.230 回答
0
aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;

您必须对 bTable 和 cTable 执行相同的操作。

当您添加超过 1 行/列时,它将需要边框来分隔它(即,将 1 行与另一行分开或将 1 列与另一列分开)。

希望这可以帮助。

于 2009-07-17T06:30:44.307 回答