• Viernes 29 de Marzo de 2024, 06:52

Autor Tema:  Msflexgrid A Excel (commandbutton)  (Leído 3598 veces)

rechy

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Msflexgrid A Excel (commandbutton)
« en: Jueves 29 de Enero de 2004, 15:27 »
0
Hola amigos, quiero saber como pasar todos los datos que obtengo en el Msflexgrid a Excel mediante un Command button pero no logro tener exito.

He visto varios de los codigos que han puesto aqui pero ninguno me ha dado ideas para lograr mi objetivo. Si alguien puede ayudarme se lo agradecere.

Saludos

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #1 en: Jueves 29 de Enero de 2004, 16:33 »
0
Hola rechy.

Usa algo de este estilo:

Código: Text
  1.  
  2. Private Sub Command1_Click()
  3.    
  4.     On Error GoTo Err_XLS
  5.    
  6.     Dim objApp As Object
  7.     Dim objWb As Object
  8.     Dim objSh As Object
  9.     Dim lngR As Long, lngC As Long
  10.    
  11.     Set objApp = CreateObject("Excel.Application")
  12.     Set objWb = objApp.WorkBooks.Add
  13.     Set objSh = objWb.ActiveSheet
  14.    
  15.     For lngR = 0 To MSFlexGrid1.Rows - 1
  16.         For lngC = 0 To MSFlexGrid1.Cols - 1
  17.             objSh.Cells(lngR + 1, lngC + 1) = _
  18.             MsFlexGrid1.TextMatrix(lngR, lngC)
  19.         Next lngC
  20.     Next lngR
  21.        
  22.     objWb.SaveCopyAs "c:\ruta\nombre.xls"
  23.     objWb.Saved = True
  24.  
  25. Exit_XLS:
  26.     On Local Error Resume Next
  27.     objApp.Close
  28.     objApp.Quit
  29.     Set objSh = Nothing
  30.     Set objWb = Nothing
  31.     Set objApp = Nothing
  32.     Exit Sub
  33.  
  34. Err_XLS:
  35.     MsgBox "(" & Err.Number & ") " & Err.Description, vbCritical, "Xls"
  36.     Resume Exit_XLS
  37.    
  38. End Sub
  39.  
  40.  

Abur.

rechy

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #2 en: Jueves 29 de Enero de 2004, 17:28 »
0
Muchas gracias Brroz. Me funciono al 100%. Muchas gracias por tu apoyo.
Saludos.

rechy

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #3 en: Miércoles 4 de Febrero de 2004, 19:05 »
0
Una pregunta mas.
El codigo que me diste es perfecto, pero como puedo hacerle para que al momento de ejecutarlo se abra excel mostrandome los datos que tengo en el MsFlexgrid???

Ya que con el codigo que pusiste solo me lo crea en la ruta que yo le especifico pero no me lo abre.

Gracias por toda tu ayuda.

rechy

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #4 en: Miércoles 4 de Febrero de 2004, 23:57 »
0
Ya lo logre Brroz.

Pero me gustaria que me lo abriera en una hoja de excel nueva, es decir que no exista, para que al momento de querer cerrarla me aparezca si deseo guardar los cambios y si le doy que si que me pregunte en que ruta quiero guardarlo.

Espero y me haya explicado.

Saludos.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #5 en: Jueves 5 de Febrero de 2004, 09:04 »
0
Hola rechy.

El código ya crea una nuevo libro... si desearas utlizar uno ya existente, en vez de CreateObject, utilizarías GetObject.

Para mostrar el libro en cuestión haz lo siguiente: objApp.Show

Para que te pregunte si quieres guardar los cambios, elimina estas líneas:
   objWb.SaveCopyAs "c:\ruta\nombre.xls"
   objWb.Saved = True

Suerte.

rechy

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #6 en: Viernes 6 de Febrero de 2004, 15:24 »
0
Hola Brroz. Aplique los cambios que me dijiste y me aparece un error: el objeto no soporta este tipo de metodo, y no me abre excel.

El codigo esta asi:

Private Sub Command9_Click()
   
   On Error GoTo Err_XLS
   
   Dim objApp As Object
   Dim objWb As Object
   Dim objSh As Object
   Dim lngR As Long, lngC As Long
   
   Set objApp = CreateObject("Excel.Application")
   Set objWb = objApp.WorkBooks.Add
   Set objSh = objWb.ActiveSheet
   
   For lngR = 0 To tabla.Rows - 1
       For lngC = 0 To tabla.Cols - 1
           objSh.Cells(lngR + 1, lngC + 1) = _
           tabla.TextMatrix(lngR, lngC)
       Next lngC
   Next lngR
       
   objApp.Show
   
Exit_XLS:
   On Local Error Resume Next
   objApp.Close
   objApp.Quit
   Set objSh = Nothing
   Set objWb = Nothing
   Set objApp = Nothing
   Exit Sub

Err_XLS:
   MsgBox "(" & Err.Number & ") " & Err.Description, vbCritical, "Xls"
   Resume Exit_XLS
   

End Sub

Tambien lo probe quitandole el Exit_XLS y el Err_XLS y me sale lo mismo.

Espero y puedas ayudarme.

Saludos.

rechy

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #7 en: Viernes 6 de Febrero de 2004, 15:32 »
0
Se me olvido decirte que el ObjApp.Show lo puse asi:

ObjApp.Show = True

De todas formas aunque le agrege el = True me saca el mismo error.

Saludos

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #8 en: Lunes 9 de Febrero de 2004, 09:07 »
0
Hola rechy.

Disculpa el error... lo que deberías de poner en vez de objApp.Show es objApp.Visible = True. Debes de quitar también las líneas objApp.Close y objApp.Quit, pues excel se cerraría al ejecutarlas.
También estaría bien que añadieras objApp.UserControl = True.

Suerte.

rechy

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #9 en: Lunes 9 de Febrero de 2004, 15:18 »
0
Muchisimas gracias Brroz.

Lo que me dices funciona perfectamente.

Agradezco el tiempo que te tomas.

Saludos.

roxiii

  • Miembro activo
  • **
  • Mensajes: 79
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #10 en: Sábado 14 de Febrero de 2004, 00:46 »
0
:hola:  

hola rechy y bbroz, les cuento que estoy en el mismo problema pero tengo que recuperar una plantilla de excel y luego llenar los datos en ella, pero no me funciona, que estoy haciendo mal?, o es que debo cambiar algo en el codigo, lo unico que hice fue cambiar .add por .get y la ruta del archivo, pero me cambia las propiedades de mi objeto excel :huh: , y no entiendo por que... :unsure:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #11 en: Sábado 14 de Febrero de 2004, 12:27 »
0
Hola roxiii.

Para eso, debes modificar un par de cosillas:

1- Como el libro debe existir, en vez de 'CreateObject', utilizarías esto para obtener la instancia al objeto application:
Código: Text
  1.  
  2. Set objApp = GetObject("C:\Ruta\Nombre.xls")
  3.  
  4.  

2- Para obtener una instancia a la hoja que quieres modificar:
Código: Text
  1.  
  2. Set objWb = objApp.Worksheets
  3. Set objSh = objWb("Nombre de mi hoja")
  4.  
  5.  

3- El resto viene a ser lo mismo.

Suerte.

roxiii

  • Miembro activo
  • **
  • Mensajes: 79
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #12 en: Martes 17 de Febrero de 2004, 19:17 »
0
hola Brroz, gracias :smartass:  , ahora ya me ubico que tipo de objeto debe ser objSh, yo le puse objapp.open Fielename:= "Nombre archivo" en vez de getobject() y me ha funcionado muy bien, y tengo una pregunta mas, cuando ya grabe el archivo de Excel y salgo del programa, cuando quiero abrirlo de nuevo, me abre la ventana de Excel y aparece vacia, es decir solo los contornos, es que no he cerrado algo bien?, o deje abierto algun objeto, ya puse .saved=true pero sigue igual...:(

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #13 en: Miércoles 18 de Febrero de 2004, 09:10 »
0
Hola roxiii.

Seguramente te falta objApp.Quit para cerrar excel.

Abur.

roxiii

  • Miembro activo
  • **
  • Mensajes: 79
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #14 en: Miércoles 10 de Marzo de 2004, 19:00 »
0
Hola de nuevo, te cuento que tengo la linea  objApp.Quit   en mi codigo, y el problema reside en que estoy abriendo una hoja de cálculo , la guardo con otro nombre y luego cierro Excel, pero cuando salgo del programa, la primera hoja sigue abierta... bueno, gracias por tu ayuda Brroz, seguimos en contacto. :rolleyes:

roxiii

  • Miembro activo
  • **
  • Mensajes: 79
    • Ver Perfil
Re: Msflexgrid A Excel (commandbutton)
« Respuesta #15 en: Jueves 11 de Marzo de 2004, 00:22 »
0
hola ya encontre la solucion, debia añadir un nuevo libro con la plantilla y no asi abrir la plantilla, ahora si funciona todo.... :kicking:

es decir debia haber hecho esto:

xl.Workbooks.Add Template:=App.Path & "\Plantillas\formato.xlt"

en vez de esto:

objApp.Workbooks.Open FileName:=App.Path & "\Plantillas\formato.xlt"

bueno con esto creo que ya esta... :smartass:  bye bye