Exportar – Importar datos de un Archivo CSV en Visual Basic 6

Uno de los formatos mas utilizados para extraer e importar información son los archivos CSV que son generados desde Microsoft Excel.

Este código que desarrolle puede importar cualquier archivo que utilice algún tipo de delimitador con esto quiero decir que no importa la extensión.

Colabora y Suscribete a mi canal de   

El diseño del formulario seria el siguiente:

Primero el código para seleccionar el archivo para eso se utiliza el componente CommonDialog para abrir un Cuadro de Dialogo para seleccionar el archivo.

Private Sub cmdSeleccionarArchivo_Click()
    CommonDialog1.Filter = "Archivos de CSV|*.csv"
    CommonDialog1.ShowOpen
    
    If CommonDialog1.FileName <> "" Then
       txtFileName.Text = CommonDialog1.FileName
    Else
       txtFileName.Text = ""
    End If
End Sub

La propiedad Filter del CommonDialog le indicamos el tipo de archivo que puedes leer en este caso CSV pero se le pueden indicar mas tipos de archivo

La propiedad ShowOpen se encarga de abrir el cuadro de dialogo luego que se seleccione el archivo debe validad que se seleccione un archivo validando la propiedad FileName, si no es vacio se lo asignamos al TextoBox.

Eso es todo con la parte de seleccionar el archivo la siguiente parte es importar el archivo pero para esto debe de tener un cvs y una base de datos con los mismos campos en este ejemplo se ve de la siguiente manera.

Ya teniendo tanto el archivo como la base de datos en mi caso la base de datos la llame db.

La parte de la conexión a la base de datos cree un modulo que contiene el siguiente condigo:

Global ConexionADO As New ADODB.Connection

Sub AbrirConexion()
    Dim DireccionDb As String
    
    DireccionDb = App.Path & "\Db.accdb"
    
    ConexionADO.CursorLocation = adUseClient
    ConexionADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DireccionDb & ";Jet OLEDB:Database Password="
    
End Sub

Y esta conexión se abre en el evento Load del Formulario:

Private Sub Form_Load()
    Call AbrirConexion
    
End Sub

Con la base de datos abierta ya se puede proceder a importar los datos utilizando el botón cmbImportar que contiene el siguiente condigo.

Private Sub cmdImportar_Click()
    Call ImportarDatos
End Sub

El código del procedimiento ImportarDatos es el siguiente:

Sub ImportarDatos()
    Dim Delimintador As String
    
    archivo = txtFileName.Text
    Delimitador = ";"
    
    Open archivo For Input As #1 ' se abre el archivo.
    num_l = 1
        Do While Not EOF(1) ' se valida que no sea el fin del archivo.
           Line Input #1, DatosLinea ' se lee una linea del archivo.
           If chkOmitir.Value = 1 And num_l = 1 Then 'si esta activo el check se omite la primera linea
           Else
                                
                DatosDivididos = Split(DatosLinea, Delimitador)  'la linea leida se divide en partes utilizando split y el delimitador
                Call GuardarDatosDb(DatosDivididos(0), DatosDivididos(1), DatosDivididos(2), DatosDivididos(3), DatosDivididos(5), DatosDivididos(4))
           End If
           num_l = num_l + 1  'cuenta el numero de registros
        Loop
    Close #1
    MsgBox "Datos Importados con exito", vbInformation, "Importar Datos"
End Sub

El código esta comentado para que se entienda aquí se nota una función de Visual Basic llamada Split que permite dividir un texto en parte utilizando un delimitador, esta función nos devuelve un arreglo con la partes. En el ejemplo son 6 partes solo que se inicia desde cero.

La logia es simple del código anterior, se abre el archivo se lee la línea, luego divido la línea en partes utilizando el delimitador y luego se pasa a la función que guarda en la base de datos.

Para guardar utilizo el procedimiento GuardarDatosDb que tiene 6 parámetros:

Sub GuardarDatosDb(Id, Nombres, Apellidos, Identificacion, Telefono, Direccion)
    sql = "Insert Into usuarios (id, nombres, apellidos, identificacion, telefono, direccion ) values (" & Id & ", '" & Nombres & "' " _
        & ", '" & Apellidos & "', '" & Identificacion & "', '" & Telefono & "', '" & Direccion & "'  ) "
        
   ConexionADO.Execute sql
   
End Sub

Y por ultimo el botón Exportar que va a crear un archivo csv con los datos que están en la base de datos.

Private Sub cmdExportar_Click()
    Call ExportarDatos
End Sub

El código anterior llama al procedimiento ExportarDatos:

Sub ExportarDatos()
   Dim DatosUsuario As New ADODB.Recordset
   
   sql = "Select * from usuarios order by ID"
   
   Set DatosUsuario = ConexionADO.Execute(sql)
   
   Open App.Path & "\datosexportados.csv" For Append As #1
   
   Print #1, "codigo;nombre;apellidos;identificacion;direccion;telefono" 'titulos de las columas
   
   Do While Not DatosUsuario.EOF
      With DatosUsuario
        Print #1, !Id & ";" & !Nombres & ";" & !Apellidos & ";" & !Identificacion & ";" & !Direccion & ";" & !Telefono
      End With
        DatosUsuario.MoveNext
   Loop
   
   
   Close #1
   
   MsgBox "Datos Exportados con existo", vbInformation, "Exportar"

 Exit Sub
error:
 MsgBox "Exportar " & Err.Description, vbCritical, "Error al exportar"

End Sub

Explicando el código anterior se hace la consulta que trae todos los datos de la tabla usuarios, se abre el archivo en mi caso lo llame “datosexportados.csv” pero lo pueden llamar como quieran. Si el archivo existe va a seguir agregando líneas pero si no existe lo crea.

Luego se hace un recorrido de los registros en cada interacción se arma cada línea del archivo de texto separado por ;  y se pasa al siguiente registro haciendo el mismo proceso hasta terminar con todos los registros.

Descarga el Código Exportar Importar archivo CSV (262 descargas )

Total Page Visits: 4922 - Today Page Visits: 12

Deja una respuesta