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 )