Si, la MSDN de Microsoft, y también una búsqueda por Google arroja buenos resultados, también los foros de club builder
Código:
http://www.areabuilder.com
hay muy buena documentación, el problema ahí es que son un poco elitistas y si eres nuevo muchas veces no te hacen caso, pero es muy buen sitio para consultar, de ahí saqué este código
Código:
#if (__BORLANDC__ >= 0x0530)
#include <Comobj.hpp>
#else
#include <oleauto.hpp> // BCB 1
#endif
......
Variant vWord, vDocumentos, vDocumento, vSeleccion, vBuscar;
String sPath = ExtractFilePath( Application->ExeName );
String sFicheroPlantilla = sPath + "plantilla.doc";
String sFicheroGenerado = sPath + "plantilla2.doc";
//--- Abre Word
vWord = CreateOleObject( "Word.Application" );
vWord.OlePropertySet( "Visible", !checkGuardar->Checked );
//--- Abre el documento que usaremos como plantilla
vDocumentos = vWord.OlePropertyGet( "Documents" );
vDocumento = vDocumentos.OleFunction( "Open",
sFicheroPlantilla.c_str(), // Documento
false, // Confirmar conversiones
true, // Modo se solo lectura
false, // Añadir al menu de ficheros recientes
"" // Clave del documento
);
//--- Selecciona todo el documento para reemplazar
vSeleccion = vWord.OlePropertyGet( "Selection" );
vSeleccion.OlePropertyGet( "Range" ).OleProcedure( "SetRange", 0, 0 );
vBuscar = vSeleccion.OlePropertyGet( "Find" );
vBuscar.OleProcedure( "ClearFormatting" );
vBuscar.OlePropertyGet( "Replacement" ).OleProcedure( "ClearFormatting" );
//--- sustituimos una palabra
// Aqui podemos meter el bucle que va a ir reemplanzando palabras
vBuscar.Exec( Procedure( "Execute" )
<< "{{nombre}}" // Texto a buscar
<< VT_EMPTY // Coincidir mayusculas y minusculas
<< VT_EMPTY // Solo palabras completas
<< VT_EMPTY // Usar caracteres comodin
<< VT_EMPTY // Suena como
<< VT_EMPTY // Todas las formas de la palabra
<< true // Hacia adelante
<< VT_EMPTY // Wrap
<< VT_EMPTY // Format
<< Edit1->Text.c_str() // Reemplazar con...
<< 2 // 2 = reemplazar todo
);
//--- sustituimos otra palabra
vBuscar.Exec( Procedure( "Execute" ) << "{{direccion}}"
<< VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY
<< true << VT_EMPTY << VT_EMPTY << Edit2->Text.c_str() << 2 );
//--- salvamos automaticamente si procede y cerramos Word
if ( checkGuardar->Checked )
{
vDocumento.OleProcedure( "SaveAs", sFicheroGenerado.c_str() );
vDocumento.OleProcedure( "Close", 0xFFFFFFFF);
vWord.OleProcedure( "Quit" );
ShowMessage("Documento generado.");
}
vWord = vDocumentos = vDocumento = vSeleccion = vBuscar = Unassigned;
Es que no se puede saber todo HOYGAN.