Page 1 of 1
Excel en Office 365
Posted: Wed Jul 30, 2025 5:29 pm
by gmart1
Buenas tardes, mi cliente tenía instalada una versión de Office antigua y ha decidido pasarse a Office 365.
En el momento que ha desinstalado la versión antigua ha dejado de funcionar mi programa al crear hojas Excel. La forma en la que lo hago es :
El error que da es :
Error description: Error TOleAuto/-1
CO_E_CLASSSTRING: TOLEAUTO:NEW
Called from: xhb\xhbole.prg => TOLEAUTO:NEW(0)
Sé que este error es debido a que no está instalado Excel en el ordenador, quisiera saber si hay alguna solución para poder usar Office 365 desde FiveWin o tendría que dejar la versión antigua instalada en su ordenador.
Muchas gracias.
Re: Excel en Office 365
Posted: Thu Jul 31, 2025 4:16 pm
by karinha
Prueba asi:
Code: Select all | Expand
// C:\FWH\SAMPLES\EXCELREM.PRG - [email protected] - 23/09/2022
#Include "FiveWin.ch"
// Defines para o segundo parâmetro - Ejemplo by Rochinha. FiveWin Brasil.
#define xlCSV 6 // CSV *.csv
#define xlCSVMSDOS 24 // MSDOS CSV *.csv
#define xlCSVWindows 23 // Windows CSV *.csv
#define xlDBF3 8 // Dbase 3 format *.dbf
#define xlExcel8 56 // Excel 97-2003 Workbook *.xls
#define xlHtml 44 // HTML format *.htm; *.html
#define xlTextMSDOS 21 // MSDOS Text *.txt
FUNCTION Main()
HB_GCALL( .F. )
SET CENTURY ON
SET DATE BRITISH
SET TIME FORMAT TO "HH:MM:SS"
SET EPOCH TO YEAR( DATE() ) - 30
SET SOFTSEEK OFF
SET WRAP ON
SETCANCEL( .F. )
SET CONFIRM OFF
SET DELETED ON
SET _3DLOOK ON
SET UNIQUE OFF
SET ESCAPE OFF
SET EXACT ON // CONTROLA O :=, = e ==
SET EXCLUSIVE OFF
SET MULTIPLE OFF
MsgRun( "AGUARDE... ABRINDO OS BANCOS DE DADOS. ", ;
"Por Favor, Espere Abertura. Pode demorar.", ;
{ || WinExec( Excel_Remtec() ), 3 } )
DbCommitAll()
DbUnLockAll()
DbCloseAll()
FreeResources()
Release All
SysRefresh()
HB_GCALL( .T. )
CLEAR MEMORY
PostQuitMessage( 0 )
QUIT
RETURN NIL
FUNCTION Excel_Remtec()
LOCAL oExcel, oWorkbook, oWorksheet
TRY
oExcel := TOleAuto():New( "Excel.Application" )
CATCH
TRY
oExcel = CreateObject( "Excel.Application" )
// Harbour:
// oExcel := win_oleCreateObject( "Excel.Application" )
CATCH
MsgInfo( "Excel is not installed on this PC. " + ;
"You need Excel to continue", "Ooooopppsss" )
RETURN( .F. )
END
END
oWorkbook := oExcel:WorkBooks
// Apertura del *.DBF
oWorkbook:Open( "c:\temp\REMTEC.DBF" )
oExcel:DisplayAlerts := .F.
oExcel:Visible := .T.
oWorksheet := oExcel:Get( "ActiveSheet" )
// Graba
oWorksheet:SaveAs( "c:\temp\tabela.CSV", 6 ) // Segundo parâmetro informa o tipo de saída
oWorksheet:SaveAs( "c:\temp\tabela.XLS", 56 ) // Segundo parâmetro informa o tipo de saída
RETURN NIL
// FIN
Regards, saludos.
Re: Excel en Office 365
Posted: Thu Jul 31, 2025 6:45 pm
by gmart1
Muchas gracias por la respuesta, pero esa es la forma en la que lo tengo programado.
Has probado ese código en un ordenador que tenga instalado sólo el Office 365 ?
Re: Excel en Office 365
Posted: Thu Jul 31, 2025 7:17 pm
by karinha
gmart1 wrote: Thu Jul 31, 2025 6:45 pm
Muchas gracias por la respuesta, pero esa es la forma en la que lo tengo programado.
Has probado ese código en un ordenador que tenga instalado sólo el Office 365 ?
No tengo Microsoft Office 365.
Regards, saludos.
Re: Excel en Office 365
Posted: Thu Jul 31, 2025 7:33 pm
by Otto
En el servidor necesitas **Office Standard con soporte OLE**. En el escritorio, una **versión completa de office**, pero **no instales la versión Click-to-Run**, ya que TOleAuto() no funcionará con ella.
Re: Excel en Office 365
Posted: Fri Aug 01, 2025 1:28 am
by MauroArevalo
Saludos,
Tenemos Office 365 sin problemas.

Re: Excel en Office 365
Posted: Fri Aug 01, 2025 6:31 am
by Otto
TOleAuto() solo funciona con versiones de Office instaladas localmente que proporcionan una interfaz COM/OLE.
**Escritorio:**
La mayoría de las versiones de Office 365 en escritorios con Windows hoy en día se instalan como *Click-to-Run* (C2R).
Estas versiones *Click-to-Run* no registran Excel como servidor COM, por lo que TOleAuto("Excel.Application") falla.
Solo una instalación completa basada en MSI (versión clásica de instalación) registra las clases OLE necesarias.
Sin embargo, este tipo de versiones son cada vez más difíciles de conseguir: Microsoft las distribuye casi exclusivamente mediante licencias por volumen.
**Servidor:**
En sistemas Windows Server necesitas Office Standard u otra versión con licencia por volumen que esté aprobada para su uso en servidores.
El término "Standard" puede ser engañoso: se trata de una versión especial de Office compatible con servidores y que incluye soporte OLE.
Re: Excel en Office 365
Posted: Fri Aug 01, 2025 3:25 pm
by sysctrl2
conclusión !
instalar office 2013 o comprar licencia

Re: Excel en Office 365
Posted: Fri Aug 01, 2025 3:36 pm
by gmart1
Otto wrote: Fri Aug 01, 2025 6:31 am
TOleAuto() solo funciona con versiones de Office instaladas localmente que proporcionan una interfaz COM/OLE.
**Escritorio:**
La mayoría de las versiones de Office 365 en escritorios con Windows hoy en día se instalan como *Click-to-Run* (C2R).
Estas versiones *Click-to-Run* no registran Excel como servidor COM, por lo que TOleAuto("Excel.Application") falla.
Solo una instalación completa basada en MSI (versión clásica de instalación) registra las clases OLE necesarias.
Sin embargo, este tipo de versiones son cada vez más difíciles de conseguir: Microsoft las distribuye casi exclusivamente mediante licencias por volumen.
**Servidor:**
En sistemas Windows Server necesitas Office Standard u otra versión con licencia por volumen que esté aprobada para su uso en servidores.
El término "Standard" puede ser engañoso: se trata de una versión especial de Office compatible con servidores y que incluye soporte OLE.
Otto, muchas gracias por la explicación, es lo que me temía.
Mi cliente pertenece a una corporación grande y le han comunicado al departamento de informática que por motivos de seguridad tienen que desinstalar todas las versiones de Office y dejar sólo la 365.
Voy a solucionarlo generando un fichero plano CSV, menos mal que la hoja Excel que genera mi programa es muy sencilla y no necesito la funcionalidad que nos da OLE.
Muchas gracias a todos, informaré cuando tenga probado la solución adoptada.