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 :

Code: Select all | Expand

TOleAuto():New ("Excel.Application")
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.

Image

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 :lol: :roll: :D

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.