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:
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.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; } }
Gracias de antemano por vuestro tiempo.
PD: Trabajo con Borland Builder C++ 6.0 y MS Word 2002 SP-2