Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Reemplazo de texto en Word Leo
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Reemplazo de texto en Word Leo Responder citando

Estimado programadores tengo el siguiente problema el cual consiste yo tengo varios documentote Word en lo cuales debo cambiar el texto “___/___/___” por un fecha que tengo almacenada en un tabla de paradox como hago, revise el foro y no encotre el siguiente codigo de Leo:
//////////////////////////////////////////////////////////////
Código:
Variant vWord, vDocumentos, vDocumento, vStoryRanges, vBuscar, vRango;
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
);

const int maxStory = 2;
int story[maxStory] = { 1 /*wdMainTextStory*/,
5 /*wdTextFrameStory*/ };
for (int i=0; i<maxStory; ++i)
{
vStoryRanges = vDocumento.OlePropertyGet("StoryRanges");
try
{
vRango = vStoryRanges.OleFunction("Item", story[i]);
}
catch (EOleSysError& e)
{
continue;
}

do
{
vBuscar = vRango.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 << Edit1->Text.c_str() << 2);

vRango = vRango.OlePropertyGet("NextStoryRange");
} while(static_cast<IDispatch*>(vRango));
} // for i

//--- 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 = vStoryRanges = vBuscar = vRango = Unassigned;
---------------------------------------------------------------------------
El cual tratando usar C++ Builder 4 me da problemas con “if (checkGuardar->Checked)” asi que no he podido corregirlo

Esperando si alguie me puede ayudar
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Estimado edgar_dh...



Cita:

El cual tratando usar C++ Builder 4 me da problemas con “if (checkGuardar->Checked)” asi que no he podido corregirlo


checkGuardar es un checkbox, ¿lo has agregado a tu formulario?

También necesitas un Edit (claro, segun el ejemplo de _Leo).

Saludos
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Gracias por tu Pronta ayuda Responder citando

Gracias por tu Pronta ayuda a hora cuando se ejecuta la aplicación se genera el siguiente error:

Raise exception Class EOleSysError with message’Ocurrio una excepcion‘

Si me puedes ayudar te lo agradezco
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Creo que hay una diferencia con el código que yo tengo (pero el autor es _Leo).

Código:

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;


En este caso se necesitan dos Edits y un checkbox.

Toma en cuenta que en la plantilla deben de estar en cualquier lugar los textos {{cliente}} y {{direccion}}, que son las cadenas que serán reemplazadas por los valores que contengan los Edits.

Saludos.

Lo he probado y no tengo ningun problema.
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

El "ocurrio una excepcion" suena a k no enkuentre el fichero plantilla o la ruta donde guardarlo/cargarlo. A mi es el fallo tipiko k me pasa kuando automatizo word Smile
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Buenos Días Gracias por la ayuda Responder citando

Buenos Días Gracias por la ayuda, estos momento ya se puede compilar pero al dar el clic al botón sale el siguiente caja de mensaje:

_Asserte:

Isbouns @ d:\bcb\emuvcl\utilcls.h/2410
Pres[Y]es to terminate, [N] o to continue and [C]ancel to debug

Con cualquier de las opciones que se presiones se genera una excepción y se cierra la aplicación ( Por otro lado tengo Win 2000, Office 2003 y C++ builder 4)

Si me puede ayudar se lo agradezco
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Alguien me puede enviar reemplazo de word Responder citando

Por favor algún programador me pueden enviar por favor un proyecto de builder con los archivo de Word para ver como se realiza el reemplazo y ver cual es mi error dando que tengo una semana en esto y me esta afectando en no poder hacer dicho reemplazo

Edgar_dh@hotmail.com o Edgar_dh@yahoo.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: ok... Responder citando

Alguien podría colgar algún ejemplito para ver como es el uso, ya que yo también he tenido problemas y no los he podido solucionar.Gracias...
_________________
Entre más sé, sé que nada sé
----------------------------------
Miguel Angel Torres Arredondo
Siegen - Deutschland
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Cita:
Alguien podría colgar algún ejemplito para ver como es el uso

En este enlace tienes los ejemplos que puse hace 4 años, tienes también los ejecutables por si quieres probarlos directamente y a mi me funcionan incluso hasta con la última beta del Office 2007:

https://cppbuilder.es/viewtopic.php?p=8501

Si el ejecutable te da algún problema revisa tu instalación de Office o pruébalo en otra maquina...
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: gracias _Leo Responder citando

gracias por tu ayuda, suerte...
_________________
Entre más sé, sé que nada sé
----------------------------------
Miguel Angel Torres Arredondo
Siegen - Deutschland
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: una preguntica final Responder citando

_Leo quería preguntarte como se podría añadir una linea/s en código que implementaste para que imprimiera el archivo que generas en tu programa. Gracias por tu ayuda. Suerte....
_________________
Entre más sé, sé que nada sé
----------------------------------
Miguel Angel Torres Arredondo
Siegen - Deutschland
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Puedes añadir una de las siguientes líneas antes de la parte donde se guarda el documento:

    vDocumento.OleProcedure("PrintOut");

o

    vDocumento.Exec(Procedure("PrintOut"));
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: muchas gracias _Leo Responder citando

gracias por todo, yo estaba intentando este código:

Código:

vDocumento.OleProcedure("Print");


pero me salía siempre un error y no encontré información de que palabra debía yo escribir ahí o como podría hacer ejecutar otras acciones similares. Gracias, suerte....
_________________
Entre más sé, sé que nada sé
----------------------------------
Miguel Angel Torres Arredondo
Siegen - Deutschland
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Si usas el enlace de buscar del foro y pones por ejemplo "word AND ayuda" encontraras mas detalles sobre esto.

https://cppbuilder.es/viewtopic.php?t=4785
https://cppbuilder.es/viewtopic.php?t=6922
https://cppbuilder.es/viewtopic.php?t=8271
https://cppbuilder.es/viewtopic.php?t=10365
https://cppbuilder.es/viewtopic.php?t=10584
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: ok gracias... Responder citando

ya estuve revisando y en el editor de visual basic en word encontré muchísima información con respecto a esto, de todas formas muchas gracias por tu ayuda _Leo, se te agradece, suerte...
_________________
Entre más sé, sé que nada sé
----------------------------------
Miguel Angel Torres Arredondo
Siegen - Deutschland
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.