Este codigo te inserta una tabla al principio o final de un documento word:
// Añadimos: #include <ComObj.hpp>
// Añadimos: #include <UtilCls.hpp> (solo en BCB4)
//--- Buscamos una instancia de Word abierta
Variant wordApp = GetActiveOleObject("Word.Application");
//--- Obtenemos el documento que esta activo
Variant wordDocument = wordApp.OlePropertyGet("ActiveDocument");
//--- Obtenemos la posicion del final del documento
Variant wordRange = wordDocument.OleFunction("Range");
wordRange.OleProcedure("Collapse", 0);
// O del principio con:
// wordRange.OleProcedure("Collapse", 1);
//--- Creamos la tabla
Variant wordTables = wordRange.OlePropertyGet("Tables");
int rows = 5, cols = 3;
Variant wordTable = wordTables.OleFunction("Add", wordRange, rows, cols);
//--- Añadimos texto en las celdas de la primera fila
Variant wordCell, wordFont;
for (int i=1; i<=cols; ++i)
{
wordCell = wordTable.OleFunction("Cell",
1 /*fila*/, i /*columna*/);
wordRange = wordCell.OlePropertyGet("Range");
// Seleccionamos un tipo de letra (opcional)
wordFont = wordRange.OlePropertyGet("Font");
wordFont.OlePropertySet("Name", "Impact");
// Escribimos en la celda
WideString str = String().sprintf("Columna %d", i);
wordRange.OlePropertySet("Text", str);
}
//--- Cambiamos el color de fondo de la primera celda de la segunda fila
wordCell = wordTable.OleFunction("Cell", 2, 1);
wordRange = wordCell.OlePropertyGet("Range");
Variant wordShading = wordCell.OlePropertyGet("Shading");
wordShading.OlePropertySet("BackgroundPatternColor", clYellow);
//--- Borramos las 3 ultimas filas
Variant wordRows = wordTable.OlePropertyGet("Rows");
for (int i=0; i<3; ++i)
{
// Selecciona la ultima celda
Variant wordRow = wordRows.OlePropertyGet("Last");
// y la borra
wordRow.OleProcedure("Delete");
}
//--- Insertamos una nueva fila al principio
wordRows.OleFunction("Add", wordRows.OlePropertyGet("First"));
//--- Insertamos una nueva fila al final
wordRows.OleFunction("Add", wordRows.OlePropertyGet("Last"));
Alguien me puede decir como puedo meter la tabla en un lugar indicado mediante una marca. Vamos q no sea al principio o al final la tabla sino donde me haga falta.
Un saludo y gracias por adelantado.