• Domingo 22 de Diciembre de 2024, 19:59

Autor Tema:  Error Al Exportar De Una Grilla Al Excel  (Leído 1754 veces)

desarrollo

  • Miembro activo
  • **
  • Mensajes: 74
    • Ver Perfil
Error Al Exportar De Una Grilla Al Excel
« en: Martes 28 de Diciembre de 2004, 01:03 »
0
HOLA GENTE,   :lol:

COMO ESTAN AKI NUEVAMENTE PARA UNA NUEVA CONSULTA, resulta que kise migrar datos a excel por medio de un GRID y buscando encontre un codigo por la web.. este es :
Código: Text
  1.  Option Explicit
  2.  
  3. Public Enum eTGrilla
  4.    [DataGrid] = 1
  5.    [MSHFlexGrid] = 2
  6.    [MSFlexGrid] = 3
  7. End Enum
  8.  
  9. Public Function mFn_GrillaToXls(ObjGrilla As Object, _
  10.                    TipoGRilla As eTGrilla, _
  11.                    Optional IniFillGrilla As Long = -1, _
  12.                    Optional IniColGrilla As Long = -1, _
  13.                    Optional FinFillGrilla As Long = -1, _
  14.                    Optional FinColGrilla As Long = -1, _
  15.                    Optional IniFillXls As Long = 1, _
  16.                    Optional FinColXls As Long = 1, _
  17.                    Optional FullPathNameFileXLS As String = "Archivo.xls", _
  18.                    Optional NameSheet As String = "Hoja") As Boolean
  19. '***********************************************************************************
  20. '* Funcion que Migra de Una grilla a un archivo de Excel
  21. '***********************************************************************************
  22.   ' variables Excel
  23.    Dim xlsApli As Excel.Application
  24.    Dim xlsWorkB As Excel.Workbook
  25.    Dim xlsSheet As Excel.Worksheet
  26.    'Variables Locales
  27.    Dim Columna As Long
  28.    Dim Fila As Long
  29.    
  30.    
  31.    'Fin de Variables
  32.    
  33.    Set xlsApli = New Excel.Application
  34.    Set xlsApli = CreateObject("Excel.Application")
  35.    Set xlsWorkB = xlsApli.Workbooks.Add
  36.    Set xlsSheet = xlsWorkB.Worksheets.Add
  37.    
  38.    If FullPathNameFileXLS = "Archivo.xls" Then FullPathNameFileXLS = App.Path & "\" & FullPathNameFileXLS
  39.    
  40.    xlsSheet.Name = NameSheet
  41.    mFn_GrillaToXls = False
  42.    On Local Error GoTo GrillaToXlsError
  43.    For Fila = IIf(InicioFila = -1, ObjGrilla.FixedRows - 1, InicioFila) To IIf(FinalFila = -1, ObjGrilla.FixedRows - 1, FinalFila)
  44.        For Columna = IIf(InicioColumna = -1, ObjGrilla.FixedCols - 1, InicioColumna) To IIf(FinalColumna = -1, ObjGrilla.FixedCols - 1, FinalColumna)
  45.            Select Case eTGrilla
  46.            Case MSHFlexGrid Or MSFlexGrid
  47.                 xlsSheet.Cells(IniFillXls, FinColXls) = ObjGrilla.TextMatrix(Fila, Columna)
  48.            Case DataGrid
  49.                 ObjGrilla.Col = Columna
  50.                 ObjGrilla.Row = Fila
  51.                 xlsSheet.Cells(IniFillXls, FinColXls) = ObjGrilla.Text
  52.            End Select
  53.            FinColXls = FinColXls + 1
  54.        Next Fila
  55.        IniFillXls = IniFillXls + 1
  56.    Next Fila
  57.    
  58.    xlsWorkB.SaveAs FullPathNameFileXLS
  59.    xlsWorkB.Close
  60.    xlsApli.Quit
  61.    mFn_GrillaToXls = True
  62.    Exit Function
  63. GrillaToXlsError:
  64.    MsgBox Err.Number & " : " & Err.Description
  65.    
  66. End Function
  67.  
  68.  
... lo kise utilizar pero me sale un error al momento de llamar a la funcion en la parte donde dice variables de EXCEL el programa me indica que no estan declaradas por ejemplo (Excel.Application, Excel.Workbook, Excel.Worksheet) por lo que no puedo ejecutarlo la pregunta seria como declararia esas variable que utilizare para vincular con EXCEL y ademas es necesario color el OPTION EXPLICiT como dice al principio y por ultimo cuando llamo a la funciona es necesario detallar las condiciones opcionales como dice la funcion (call mFn_GrillaToXls(DATAGRID1, TipoGRilla [me da a escoger],opcional1, opcional2,etc..)

Disculpen las molestias pero necesito saberlo para poder exportar datos de un Grid (en este caso) al Excel de antemano mil gracias por la ayuda brindada   :hola:

desarrollo  :comp:

PD:muy a parte del comentario anterior existe otra manera de poder exportar al excel mayor cantidad de datos ya no con GRid (o referenciales) sino por medio de base me refiero desde SQl (ke es mi caso..) gracias y FELIZ AÑO NUEVO !!!

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Error Al Exportar De Una Grilla Al Excel
« Respuesta #1 en: Martes 28 de Diciembre de 2004, 09:18 »
0
Hola Desarrollo.

Te falta una referencia a la biblioteca de objetos de Excel, pero puedes hacer una cosa en vez de añadirla:

Puedes instanciar las clases de excel mediante 'CreateObject', obviando el Set variable = New clase. Es decir: declara esas variables como Object y elimina la línea Set xlsApli = New Excel.Application, que además en el código es redundante. Con esto ya no te debería dar ese error.

Suerte.

desarrollo

  • Miembro activo
  • **
  • Mensajes: 74
    • Ver Perfil
Re: Error Al Exportar De Una Grilla Al Excel
« Respuesta #2 en: Miércoles 29 de Diciembre de 2004, 01:24 »
0
Hola BRROZ...  :hola:

mas o menos lo que tu me dices es asi:
Dim xlsApli As Object     ó
Create xlsApli As Object  (esta me da error)

podrias orientarme por favor... ya se en donde puedo colocar las referencias pero kiero de la manera que tu me dices

gracias
desarrollo  :comp:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Error Al Exportar De Una Grilla Al Excel
« Respuesta #3 en: Miércoles 29 de Diciembre de 2004, 12:34 »
0
Hola.

Cambia esto
Código: Text
  1.  
  2. ' variables Excel
  3.   Dim xlsApli As Excel.Application
  4.   Dim xlsWorkB As Excel.Workbook
  5.   Dim xlsSheet As Excel.Worksheet
  6.  
  7.  

por esto
Código: Text
  1.  
  2. ' variables Excel
  3.   Dim xlsApli As Object
  4.   Dim xlsWorkB As Object
  5.   Dim xlsSheet As Object
  6.  
  7.  

Cambia también esto
Código: Text
  1.  
  2.   Set xlsApli = New Excel.Application
  3.   Set xlsApli = CreateObject("Excel.Application")
  4.   Set xlsWorkB = xlsApli.Workbooks.Add
  5.   Set xlsSheet = xlsWorkB.Worksheets.Add
  6.  
  7.  

por esto otro  
Código: Text
  1.  
  2.   Set xlsApli = CreateObject("Excel.Application")
  3.   Set xlsWorkB = xlsApli.Workbooks.Add
  4.   Set xlsSheet = xlsWorkB.Worksheets.Add
  5.  
  6.  

Chao.