• Viernes 15 de Noviembre de 2024, 07:37

Autor Tema:  ¡insertar Tabla En Word!  (Leído 1881 veces)

titipower

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
¡insertar Tabla En Word!
« en: Viernes 9 de Enero de 2004, 11:48 »
0
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.  ;)