Macro para pasar una hoja de excel a access

Tengo un problemita, necesito una macro para importar una hoja de excel a access 2007. Tengo una hoja con 25 columnas y necesito solo pasar 5 columnas que me interesan a mi base de datos en access, ademas si se puede vincular para que cualquier cambio que se haga en excel me lo registre en access (ya lo intente con el asistente para vincular tablas, lo malo es que no me deja modificar ningún registro desde el mismo access y dice que solo se puede modificar en excel)

1 respuesta

Respuesta
1
Las hojas de cálculo vinculadas como tablas en Access no las puedes modificar desde la base de datos sino que tienes que hacerlo desde su programa (Excel).
Respecto a lo de importar sólo unas columnas es un poco más difícil.
Puedes hacerlo fácilmente de forma manual (quitar las columnas que sobren mientras importas), pero hacerlo con una macro... Bueno, vamos a ver cómo lo haría yo.
En primer lugar vamos a crear una función "importarDatosExcel" en un módulo (luego la llamarás desde tu macro).
Crea un módulo nuevo.
Necesitaremos las librerías de Excel. Para tenerlas desde el módulo accede al menú "Herramientas - Referencias" y marca "Microsoft Excel 11.0 Object Library" (o la versión que tengas).
El código de la función es el que viene a continuación:
Function importarDatosExcel(ByVal nomFichXLS As String)
    Dim miXls As Excel.Application
    Dim miWb As Excel.Workbook
    Dim miHoja As Excel.Worksheet
    Dim i As Integer
    Dim rs As Recordset
    ' Abrimos el Excel
    Set miXls = New Excel.Application
    ' Abrimos el libro
    On Error Resume Next
    Set miWb = miXls.Workbooks.Open(nomFichXLS, False, True)
    If Err <> 0 Then
        MsgBox "Error al abrir el libro a importar." & vbCrLf & vbCrLf & Error$
        On Error GoTo 0
        miXls.Quit
        Exit Function
    End If
    On Error GoTo 0
    ' Seleccionamos la hoja
    Set miHoja = miWb.Sheets("Hoja1")
    ' Borramos el contenido de la tabla para volver a cargarla
    DoCmd. RunSQL "delete from miTablaXLS" ' (o como se llame la tabla)
    ' Y la abrimos para insertar los nuevos datos
    Set rs = CurrentDb().OpenRecordset("miTablaXLS")
    ' Leemos del excel e insertamos en access
    I = 2 ' Saltamos la primera línea que tendrá los títulos
    Do While miHoja.Cells(i, 1) <> ""
        rs.AddNew
        rs.Fields(0) = miHoja.Cells(i, 1)
        rs.Fields(1) = miHoja.Cells(i, 3) ' Fijate que he saltado la columna 2
        rs.Update
        i = i + 1
    Loop
    ' Cerramos todo
    rs.Close
    Set miHoja = Nothing
    miWb.Close
    Set miWb = Nothing
    miXls.Quit
    Set miXls = Nothing
End Function
Desde tu macro tendrás que llamar a la función con "ejecutarCódigo" y pasar como parámetro el nombre completo del fichero.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas