Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error con TWordApplication

Estas en el tema de Error con TWordApplication en el foro de C/C++ en Foros del Web. Hola, Estoy trabajando con dicho componente, y me da un error que no logro solucionar. Lo único que hace de momento la funcion es abrir ...
  #1 (permalink)  
Antiguo 24/10/2006, 03:49
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Error con TWordApplication

Hola,

Estoy trabajando con dicho componente, y me da un error que no logro solucionar. Lo único que hace de momento la funcion es abrir el word y usando una plantilla guardarlo con un nombre basado en datos de la BD. Esto funciona bien, pero al volver a ejecutar la funcion me tira el siguiente error (la primera vez se ejecuta bien, segunda y sucesivas veces falla):

---------------------------
HRCHECK:
---------------------------
'this->get_Documents((Word_2k::Documents**)&prop)': El servidor RPC no está disponible.

@ c:\archivos de programa\borland\cbuilder6\include\vcl\Word_2k.h/5151
Press [Y]es to terminate, [N]o to continue and [C]ancel to Debug
---------------------------
Sí No Cancelar
---------------------------

El codigo es el siguiente:
Código:
void __fastcall Tmod_Informes::GeneraICB(TObject *consulta)
{
        TVariant directorio = strcat(RUTA,DIRECTORIO_ICB);
        TVariant plantilla = directorio.operator AnsiString() + (AnsiString)PLANTILLA_ICB ;
        TVariant nombreInforme =  directorio.operator AnsiString() + ((TQuery*) consulta)->Fields->FieldByName("codigo")->AsString +
                "_"+ ((TQuery*) consulta)->Fields->FieldByName("denominacion")->AsString +
                "_"+ FormatDateTime("dd-mm-yyyy",Now()) + "_destinatario.doc";

        OleVariant Template = plantilla;
        OleVariant NewTemplate = False;

        try{
                try{
                        wordApp->Connect();
                        wordApp->GetDefaultInterface()->Visible = True;
                        wordApp->Activate();

                }catch(...){
                        ShowMessage("Error, el MS Word no está instalado o no se puede ejecutartar.\n"
                                "El MS Word es necesario para realizar el informe.");
                        wordApp->Disconnect();
                        Abort;
                }                
                try{
                        wordApp->Documents->Open(Template, EmptyParam,EmptyParam,EmptyParam,
                                        EmptyParam,EmptyParam,EmptyParam,
                                        EmptyParam,EmptyParam);
                }catch(...){
                        ShowMessage("Error, no se encuentra la plantilla del informe.");
                        wordApp->Disconnect();
                        Abort;
                }
                //Ponemos las siguientes opciones a false para que habra mas rapido
                wordApp->Options->CheckSpellingAsYouType = False;
                wordApp->Options->CheckGrammarAsYouType = False;

                wordDoc->ConnectTo(wordApp->ActiveDocument);
                wordApp->ActiveDocument->SaveAs(nombreInforme);

        }catch(Exception &exception){
                ShowMessage("Error al generar el informe comercial de bolsa.");
                Application->ShowException(&exception);
                wordApp->Disconnect();
                wordApp->Quit();
                Abort;
        }

}
Porfavor quien pueda aportar algo que me ayude, no encuentro mucha documentacion sobre el tema. Y dudo si el problema reside en el código o en el MS Office, pero lo tengo que solucionar como sea. He leido que se puede atacar a Word mediante un objeto OLE , en vez de TWordApplication, pero no encuentro como implementarlo en C++, si alguien posee codigo ejemplo porfavor publiquelo en este hilo.

Gracias de antemano por vuestro tiempo.

PD: Trabajo con Borland Builder C++ 6.0 y MS Word 2002 SP-2

Última edición por kemahangre; 24/10/2006 a las 03:55
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:13.