tExcel 2003 o 2007

Post Reply
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

tExcel 2003 o 2007

Post by colthop »

Hola a todos:

Paso a comentaros un problema por si alguien sabe la solución. Tengo varias aplicaciones que hacen hojas Excel y funcionan correctamente, pero cuando esta instalado el Office 2007 sigue creandolas bien pero en formato XLSX en vez de XLS aunque yo ponga la extension XLS, mi pregunta es la siguiente:

¿ Alguien sabe como forzar a que se grabe en formato 2003 o XLS en vez de 2007 o XLSX cuando se utiliza la clase tExcel ?

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: tExcel 2003 o 2007

Post by colthop »

Hola de nuevo se me olvido deciros que si alguien sabe donde puedo ver todas las opciones de la clase tExcel me lo podria comunicar, gracias.
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: tExcel 2003 o 2007

Post by MarioG »

Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: tExcel 2003 o 2007

Post by Sebastián Almirón »

Si quieres guardar un libro en un formato o versión diferente del de la versión Excel que tengas instalada, deberás utilizar el método SaveAs en lugar del método Save.

No se como utilizas Excel, pero sería algo así:

oExcel:ActiveWorkBook:SaveAs('nombre del fichero',numero de formato) // numero de formato = 43 para formato Excel 97

Busca en Excel la propiedad xlFileformat para ver los distintos formatos en los que se puede guardar.

Eso no evitará que si quien se encarga de guardar el libro es el usuario, por defecto se siga guardando en formato 2007.
Para evitarlo, hay que modificar en excel la forma en que se guandan los libros Excel:
En Excel 2007, botón de Excel -> Opciones de Excel -> Guardar -> Guardar archivos en formato: Libro Excel 97-2003

Saludos
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: tExcel 2003 o 2007

Post by colthop »

Hola a Todos y en especial a Sebastian y Mario:

He intentado lo que me poneis y grabando con WorkBook:SaveAs(`'Nombre de Fichero',43) o oExcel:ActiveWorkBook:SaveAs(`'Nombre de Fichero',43) y tambien de multiples formas pero siempre me da un mensaje o parecido:

Error Excel.Application:ACTIVEWORKBOOK/3 DISP_E_MEMBERNOTFOUND: SAVEAS

Y de hay no salgo ponga lo que ponga.

Si me podeis ayudar gracias

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: tExcel 2003 o 2007

Post by acuellar »

Carlos

De esta forma siempre guarda en .XLS 97-2003

Code: Select all

  oExcel:=CreateObject( "excel.application" )
  oExcel:DisplayAlerts=.F.
  oBook:=oExcel:Workbooks:Add() 
  oSheet:=oExcel:ActiveSheet 
   oSheet:Range( "A1" ):Value ="TITULO DE LA PLANILLA"
   oSheet:Range( "A1:D1" ):HorizontalAlignment := xlHAlignCenterAcrossSelection //Centra el titulo
   oBook:SaveAs( "C:\PLANILLA.XLS" )
   oExcel:Visible = .T. //Abre la planilla
 
Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: tExcel 2003 o 2007

Post by Sebastián Almirón »

Si no lo consigues, pega un trozo del código a ver que pasa.

Me da la sensación de que ese error es porque aun no tienes ningún libro creado o abierto.
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: tExcel 2003 o 2007

Post by colthop »

Hola de nuevo:

He intentado lo que me has puesto y lo unico que ha hecho es no poner el mensaje de error pero el formatosigue siendo XLSX con extensión XLS. Aqui os pongo como hago el archivo:

Code: Select all

SELECT 51

oExcel1 := TOleAuto():New( "Excel.Application" )
oWorkBook:=oExcel1:WorkBooks:Add()
oHoja1 := oExcel1:Get( "ActiveSheet" )
oHoja1:Cells:Font:Name := "Arial"
oHoja1:Cells:Font:Size := 10
oHoja1:Cells(1, 1):Font:Bold := .T.
oHoja1:Cells(1, 1):Value := "FIRMA_NUM_REG"
oHoja1:Cells(1, 2):Font:Bold := .T.
oHoja1:Cells(1, 2):Value := "SEGMENTO"
oHoja1:Cells(1, 3):Font:Bold := .T.
if opc = 1
  oHoja1:Cells(1, 3):Value := "PERIODO"
else
  oHoja1:Cells(1, 3):Value := "AÑO"
endif
oHoja1:Cells(1, 4):Font:Bold := .T.
oHoja1:Cells(1, 4):Value := "CCAA"
oHoja1:Cells(1, 5):Font:Bold := .T.
oHoja1:Cells(1, 5):Value := "VENG95SPB"
oHoja1:Cells(1, 6):Font:Bold := .T.
oHoja1:Cells(1, 6):Value := "VENG97CPB"
oHoja1:Cells(1, 7):Font:Bold := .T.
oHoja1:Cells(1, 7):Value := "VENG98SPB"
oHoja1:Cells(1, 8):Font:Bold := .T.
oHoja1:Cells(1, 8):Value := "VENGOA"
oHoja1:Cells(1, 9):Font:Bold := .T.
oHoja1:Cells(1, 9):Value := "VENNGO"
oHoja1:Cells(1,10):Font:Bold := .T.
oHoja1:Cells(1,10):Value := "VENGOB"
oHoja1:Cells(1,11):Font:Bold := .T.
oHoja1:Cells(1,11):Value := "VENP_S_I_GOB"
oHoja1:Cells(1,12):Font:Bold := .T.
oHoja1:Cells(1,12):Value := "VENGOC"
oHoja1:Cells(1,13):Font:Bold := .T.
oHoja1:Cells(1,13):Value := "VOL_GOC_UE"
oHoja1:Cells(1,14):Font:Bold := .T.
oHoja1:Cells(1,14):Value := "VENBIOD"
oHoja1:Cells(1,15):Font:Bold := .T.
oHoja1:Cells(1,15):Value := "VENP_S_I_FOB"
oHoja1:Cells(1,16):Font:Bold := .T.
oHoja1:Cells(1,16):Value := "VENPIEVM_FOB"
oHoja1:Cells(1,17):Font:Bold := .T.
oHoja1:Cells(1,17):Value := "CNT_FOB_UE"
oHoja1:Cells(1,18):Font:Bold := .T.
oHoja1:Cells(1,18):Value := "VENP_S_I_FOE"
oHoja1:Cells(1,19):Font:Bold := .T.
oHoja1:Cells(1,19):Value := "VENPIEVM_FOE"
oCol = 2
do while .T.
  if eof()
    exit
  endif
  oHoja1:Cells(oCol, 1):Value := VDTMA2->firma
  oHoja1:Cells(oCol, 2):Value := VDTMA2->segmento
  if opc = 1
    oHoja1:Cells(oCol, 3):Value := VDTMA2->periodo
  else
    oHoja1:Cells(oCol, 3):Value := VDTMA2->ano
  endif
  oHoja1:Cells(oCol, 4):Value := VDTMA2->ccaa
  if veng95spb > 0.000
    oHoja1:Cells(oCol, 5):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol, 5):Value := VDTMA2->veng95spb
  endif
  if veng97cpb > 0.000
    oHoja1:Cells(oCol, 6):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol, 6):Value := VDTMA2->veng97cpb
  endif
  if veng98spb > 0.000
    oHoja1:Cells(oCol, 7):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol, 7):Value := VDTMA2->veng98spb
  endif
  if vengoa    > 0.000
    oHoja1:Cells(oCol, 8):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol, 8):Value := VDTMA2->vengoa
  endif
  if venngo    > 0.000
    oHoja1:Cells(oCol, 9):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol, 9):Value := VDTMA2->venngo
  endif
  if vengob    > 0.000
    oHoja1:Cells(oCol,10):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,10):Value := VDTMA2->vengob
  endif
  if venpsigob > 0.000
    oHoja1:Cells(oCol,11):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,11):Value := VDTMA2->venpsigob
  endif
  if vengoc    > 0.000
    oHoja1:Cells(oCol,12):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,12):Value := VDTMA2->vengoc
  endif
  if vol_goc_ue> 0.000
    oHoja1:Cells(oCol,13):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,13):Value := VDTMA2->vol_goc_ue
  endif
  if venbiod   > 0.000
    oHoja1:Cells(oCol,14):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,14):Value := VDTMA2->venbiod
  endif
  if venpsifob > 0.000
    oHoja1:Cells(oCol,15):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,15):Value := VDTMA2->venpsifob
  endif
  if venpievmfo> 0.000
    oHoja1:Cells(oCol,16):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,16):Value := VDTMA2->venpievmfo
  endif
  if cnt_fob_ue> 0.000
    oHoja1:Cells(oCol,17):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,17):Value := VDTMA2->cnt_fob_ue
  endif
  if venpsifoe > 0.000
    oHoja1:Cells(oCol,18):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,18):Value := VDTMA2->venpsifoe
  endif
  if venpievfoe> 0.000
    oHoja1:Cells(oCol,19):Set( "NumberFormat", "#.##0,000" )
    oHoja1:Cells(oCol,19):Value := VDTMA2->venpievfoe
  endif
  oCol = oCol + 1
  skip + 1
enddo
oHoja1:=NIL

* oWorkBook:SaveAs(xfich2,43)

oWorkBook:SaveAs(xfich2)

* oExcel1:ActiveWorkBook:SaveAs(xfich2,43)

oExcel1:quit()
oExcel1:=NIL
Si podeis ayudarme .

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
User avatar
anserkk
Posts: 1280
Joined: Fri Jun 13, 2008 11:04 am
Location: Kochi, India

Re: tExcel 2003 o 2007

Post by anserkk »

The 2nd Parameter in SaveAs ie 43 will give you the above said error.

Try 56 instead of 43

Code: Select all

oExcel1:ActiveWorkBook:SaveAs("MyFile2003Version",56)  // xlExcel8 (97-2003 format in Excel 2007, .xls)
Regards
Anser
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: tExcel 2003 o 2007 (SOLUCIONADO)

Post by colthop »

Hola a todos:

Es para dar las gracias a Anser ya que su post me ha solucionado el problema.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
Post Reply