Importar datos de un archivo de Excel a un Control MshFlexGrid

En este ejemplo se trata de importar los datos de un archivo de Excel a un Control MS FlexGrid.

Con este ejemplo podemos tener idea de todo lo que podríamos hacer aparte de llenar el grid también se podría guardar en una base de datos.

Para este ejemplo se necesita los siguientes controles:

Para lograr la importación lo primero es seleccionar el archivo de excel usando el control CommonDialog:

Private Sub cmdSeleccionarArchivo_Click()
    CommonDialog1.Filter = "Archivos de excel|*.xls|Archivos Excel 2007|*.xlsx"
    CommonDialog1.ShowOpen
    
    If CommonDialog1.FileName <> "" Then
       txtFileName.Text = CommonDialog1.FileName
    Else
       txtFileName.Text = ""
    End If
End Sub

Al dar clic en el botón de seleccionar archivo lo primero es pasar el filtro al CommonDialog1 para que solo muestre archivos xls o xlsx

Luego se valida que si se seleccionara un archivo.

Para organizar mejor el MSGrid se debe ocultar una columna y darle ancho a las otras y ponerles titulo:

Sub InicializarGrid()
    mshGrid.Cols = 6

    mshGrid.ColWidth(0) = 0
    mshGrid.ColWidth(1) = 900
    mshGrid.ColWidth(2) = 2500
    mshGrid.ColWidth(3) = 1200
    mshGrid.ColWidth(4) = 1500
    mshGrid.ColWidth(5) = 1800
    
    mshGrid.TextMatrix(0, 1) = "Código"
    mshGrid.TextMatrix(0, 2) = "Nombre"
    mshGrid.TextMatrix(0, 3) = "Identificación"
    mshGrid.TextMatrix(0, 4) = "Teléfono"
    mshGrid.TextMatrix(0, 5) = "Dirección"
    
End Sub

Esta función se llama desde el Load del formulario:

Private Sub Form_Load()
    Call InicializarGrid
End Sub

La siguiente parte es procesar el archivo tomando la url del archivo que se selecciono anteriormente.

Sub ImportarArchivo()
 
 If Me.txtFileName.Text = "" Then
    MsgBox "Debe seleccionar un archivo", vbExclamation, "Error al Importar "
    Exit Sub
 End If
    
 Set Excel = CreateObject("Excel.Application")
 Set obj_Workbook = Excel.Workbooks.Open(Me.txtFileName.Text)
 

 
' -- referencia la Hoja, por defecto la hoja activa
  If sSheetName = vbNullString Then
      Set obj_Worksheet = obj_Workbook.ActiveSheet
  End If
  
  vrNumHojas = Excel.Sheets.Count()
  txt = ""
  codigo = 0
  x = 2 'se lee desde la segunda fila evitando los titulos
  fila = 1
  mshGrid.Redraw = False
  Do While codigo <> ""
        Set obj_Worksheet = obj_Workbook.Worksheets(1) 'selecciona la hoja 1
        
        If mshGrid.Rows > 1 Then mshGrid.FixedRows = 1
        
        codigo = obj_Worksheet.Cells(x, 1).Value
        nombre = obj_Worksheet.Cells(x, 2).Value
        identificacion = obj_Worksheet.Cells(x, 3).Value
        telefono = obj_Worksheet.Cells(x, 4).Value
        direccion = obj_Worksheet.Cells(x, 5).Value
        
        mshGrid.Rows = mshGrid.Rows + 1
        
        mshGrid.TextMatrix(fila, 1) = codigo
        mshGrid.TextMatrix(fila, 2) = nombre
        mshGrid.TextMatrix(fila, 3) = identificacion
        mshGrid.TextMatrix(fila, 4) = telefono
        mshGrid.TextMatrix(fila, 5) = direccion
        
        If fila Mod 2 = 0 Then
            For I = 1 To 5
                mshGrid.Col = I
                mshGrid.CellBackColor = &HFEEEDD
            Next I
            mshGrid.Row = fila
        End If
        
        x = x + 1
        fila = fila + 1
   Loop
  mshGrid.Redraw = True
  Set obj_Worksheet = Nothing
  Set obj_Workbook = Nothing
  Excel.Quit
  Set Excel = Nothing

End Sub

Para abrir el archivo de Excel se utiliza una librería de visual basic 6 la cual se le pasa la url del archivo y ya nos devuelve su contenido.

Set Excel = CreateObject(“Excel.Application”) Set obj_Workbook = Excel.Workbooks.Open(Me.txtFileName.Text)

Luego activamos la hoja uno para recorrerla

Set obj_Worksheet = obj_Workbook.Worksheets(1)

Y se lee cada columna del archivo

codigo = obj_Worksheet.Cells(x, 1).Value

Y luego se le pasa al Grid

mshGrid.Rows = mshGrid.Rows + 1   aca se añade un fila mas al grid

mshGrid.TextMatrix(fila, 1) = codigo

La funcion ImportarArchivo() se llama desde el botón cmdCargar

Private Sub cmdCargar_Click()
    Call ImportarArchivo
End Sub

El código del ejemplo lo puedes descargar desde:  Importar Excel a MshFlexGrid (139 descargas )

 

 

Total Page Visits: 12132 - Today Page Visits: 2

Deja una respuesta