我正在尝试在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自动化代码(这并不难,几乎一样)