Pregunta

Estoy tratando de hacer tablas dentro de tablas en Word. por supuesto en el programa finall será dinamical, que no es en esta muestra.

Aquí está mi código de ejemplo.

 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);

En primer lugar puse nueva tabla (2 filas, 1 columna) en la posición del cursor, y luego Trato de poner segunda tabla en la celda (1,1) y tercero en la celda (2,1) de la primera tabla. segunda tabla tiene también 2 filas y 1 columna, pero tercera tabla tiene 3 filas y 1 columna. pero en lugar de lo que quiero me sale segundo y tercer cuadro de la pizca de sólo una fila, sin importar si putt algo en emabrgo celular o not.I siempre veo más que la última cadena que puse en esa tabla.

aún más, si pongo 1 fila y 2 tabla de columna dentro de la primera tabla, que todo es normal.

¿me pueden ayudar.

gracias, Rok

¿Fue útil?

Solución

Cuando usted tiene problemas para crear esas tablas en el código, haga lo siguiente:

  • Abra Word
  • grabar una macro nueva
  • Durante la grabación, la construcción de la tabla que desea, y luego se detiene la grabación.
  • vea su código de macro en el Editor de Visual Basic y tratar de traducir eso al código de automatización OLE (que no es tan difícil, es casi lo mismo)

Otros consejos

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

Usted tendrá que hacer lo mismo para bTable y cTable.

Cuando agrega más de 1 fila / columna, necesitará frontera para separarla (es decir, para separar 1 fila de otro o por separado 1 columna de otro).

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top