Saludos
En ninguna version de PB se puede hacer esa exportación de forma nativa; pero para eso puedes usar objetos y controles OLE, tal como se hace para importar o exportar a excel.
Deberias definir el objeto OLE en la seccion de instance variables, por ejemplo:
OLEObject io_archivo_exportado
Yo tengo la siguiente funcion con la cual importo un archivo desde Excel hacia una DW; pero la idea es la misma para exportar desde una DW y tambien para word
funcion of_exportaexcel(adw_dwimport datawindow)
//10-08-2010 DR: Script de http://www.mtbase.com/foros/respuestas.jsp?t_id=3683&t_prd=3&foro=PowerBuilder
//20-12-2011 DR. Se agrega la datawindow en donde inserta como parametro
string ls_err
long ll_rc,li_ret
OLEObject loo_excel
If GetFileOpenName("Elija el nombre del archivo Excel", &
is_PathFileName, is_FileName, "XLS", &
"Archivo Excel 2007 (*.xlsx),*.xlsx," &
+"Archivo Excel (*.xls),*.xls") < 1 Then return 0
loo_excel = CREATE OLEObject
li_ret = loo_excel.ConnectToObject("excel.application")
if li_ret <> 0 then
li_ret = loo_excel.ConnectToNewObject("excel.application")
end if
Choose Case li_ret
case 0
ls_err='Conexión Satisfactoria con OLE (Excel)'
case -1
ls_err='Error. Llamada Inválida a objeto OLE (Excel)'
case -2
ls_err='Error. Nombre de la clase no encontrada con OLE (Excel)'
case -3
ls_err='Error. El objeto OLEObject no puede ser creado (Excel)'
case -4
ls_err='Error. No se puede conectar con el objeto (EXCEL)'
case -5
ls_err='Error no tratado (EXCEL)'
case else
ls_err='Error desconocido: '+string(li_ret)+'(EXCEL)'
End Choose
if li_ret <> 0 then// Se desconecta el objeto OLE y se destruye
clipboard('')
loo_excel.workbooks.close()
loo_excel.Application.Quit
loo_excel.disconnectobject()
DESTROY loo_excel
return 0
end if
loo_excel.workbooks.open( is_PathFileName )
loo_excel.visible = false
loo_excel.ActiveCell.CurrentRegion.Select()
loo_excel.Selection.Copy()
ll_rc = adw_dwimport.ImportClipBoard (2)
Choose Case ll_rc
case -1
messagebox('Error -1','No rows or startrow value supplied is greater than the number of rows in the string')
case -3
messagebox('Error -3','Error. Argumento Inválido..!!')
case -4
messagebox('Error -4','Error. Entrada Inválida..!!')
case -13
messagebox('Error -13','Error. Datawindows no soporta importación de datos..!!')
case -14
messagebox('Error -14','Error. Al resolver Datawindows anidado..!!')
End Choose
if ll_rc < 0 then // Se desconecta el objeto OLE y se destruye
clipboard('')
loo_excel.workbooks.close()
loo_excel.Application.Quit
loo_excel.disconnectobject()
DESTROY loo_excel
return 0
end if
clipboard('')
loo_excel.workbooks.close()
loo_excel.Application.Quit
loo_excel.disconnectobject()
DESTROY loo_excel
return 1
/////////////////////////////
Espero te sirva, sino en el link del primer comentario que tengo en la funcion puedes encontrar ayuda.