Urgente:fusion con word desde pb6

Trabajo con Powerbuilder 6.0. En la aplicación que tengo instalada en un cliente se imprimen documentos en word que hacen fusión con un fichero excel que previamente han sido grabado desde la aplicación con los datos de una datastore.
Hasta el momento todo ha ido muy bien con Windows 98 y office 97, incluso creo que con Office 2000 también va bien. El problema es que el cliente ha cambiado a Windows XP y ya no funciona ni con Office 97 ni con Office XP. Yo creo que aunque desinstales el Office XP e instales el Office 97, Windows XP sigue haciendo referencia a alguna librería que tenga él ya incorporada de Office XP.
A continuación te describo un poco el código que utilizo y el error que me da.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Grabo la datastore como un fichero excel
vi_datastore_tabla.saveas (string (vi_path + "\" + vi_tabla), Excel!, TRUE) <> 1
// Declaro y creo un objeto ole
oleobject vl_word
vl_word = create oleobject
int vl_result
// Hago la conexión con word 8 (o lo que es lo mismo Word 97)
vl_result = vl_word.ConnectToNewObject("word.application.8")
IF vl_result <> 0 then
messagebox ("ERROR " + string (vl_result), "No se pudo abrir Word")
return
end if
// Abro el documento word pasado como parámetro que hace fusión cogiendo los datos del fichero excel grabado previamente.
vl_word.Documents.open(string(vi_path + "\" + pe_documento))
// Combino el documento en impresora. El 1 es la constante que indica que es impresora
// en word es la constante wdSendToPrinter
vl_word.ActiveDocument.MailMerge.Destination = 1 //Aquí es donde casca.
vl_word.ActiveDocument.MailMerge.MailAsAttachment = False
vl_word.ActiveDocument.MailMerge.MailAddressFieldName = ""
vl_word.ActiveDocument.MailMerge.MailSubject = ""
vl_word.ActiveDocument.MailMerge.SuppressBlankLines = True
//Indicamos que convine desde el primer registro hasta el ultimo
vl_word.ActiveDocument.MailMerge.DataSource.FirstRecord = 1 // wdDefaulFirstRecord
vl_word.ActiveDocument.MailMerge.DataSource.LastRecord = -16 // wdDefaultLastRecord
// Ejecutamos el macro
vl_word.ActiveDocument.MailMerge.Execute()
// Salvo los cambios para que no me lo pregunte al salir si quiero salvar
vl_word. ActiveDocument. Sabe()
// Como la aplicación se queda abierta la cerramos
vl_word.Application.Quit()
// Desconectamos el objeto ole de word
vl_result = vl_word.DisconnectObject ()
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
El error que da es:
'error accessing external object property destination ocurrido en la línea 33 .... '
que hace referencia a la línea de código:
vl_word.ActiveDocument.MailMerge.Destination = 1
Yo creo que aunque le estoy diciendo que abra Word 97, él hace referencia al XP y éste no tiene la propiedad Destination y por eso da error.

1 respuesta

Respuesta
1
La respuesta más simple que se me ocurre, es que al cambiar sistema operativo, cambia también las librerías api, las cuales son modificadas a causa de las nuevas modalidades, estos cambios regularmente se dan en vínculos de nuevas librerías, o bien en cambios internos de la propia librería, es casi seguro que la librería que estas utilizando se encuentra acondicionada a las librerías y funciones de las versiones del sistema operativo que me cuentas, y los errores son provocados simplemente por los cambios internos de las llamadas a estas librerías, igualmente mi recomendación es que le des un repaso al objeto original que vincula dicho proceso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas