A ver checate este código, lo utilizo para cargar diversos datos como balanzas, pólizas, catálogos, etc. desde excel a access, espero te sirva, saludos.
Este es el código:
Código vb:
Ver originalSub CargarDesdeExcel()
Dim o_Hoja, o_Excel, o_Libro As Object
o_Excel = CreateObject("Excel.Application")
Dim xFila, Fila, xRow As Integer
xRow = 1
o_Libro = o_Excel.WorkBooks.Open("Ruta de tu libro de excel")
o_Hoja = o_Libro.Worksheets("hoja de tu libro")
'cuento las filas con datos de la hoja partiendo de la celda A1, A2,
'o la que gustes donde los datos sean continuos y sin espacios en blanco para obetener el numero de filas
While Not o_Hoja.Range("A" & xRow).Value = Nothing
xRow = xRow + 1
End While
'condiciono la carga de los datos de la hoja en caso de que la misma tenga rotulos o no
'asignandole a xFila el valor de la fila donde quiero que inicie el bucle que la carga de datos
Select Case TieneRotulosElLibroChk.Checked
Case False
xFila = 1
Case True
xFila = 2
End Select
Dim BDCn As New ADODB.Connection
Dim BDRd As New ADODB.Recordset
BDCn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TuRuta & ";Persist Security Info=False;Jet OLEDB:DataBase Password=hu9rethu")
BDRd.Open("TuTabla", BDCn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
If Not BDRd.BOF Then
With o_Hoja
'Recorro la hoja de excel
For Fila = xFila To xRow - 1
BDRd.AddNew()
'agrego a mi base de datos los valores de las celdas que yo le estoy indicando
BDRd.Update("Mov", .Range("A" & Fila).Value)
BDRd.Update("FechaPol", .Range("B" & Fila).Value)
BDRd.Update("TipoPol", .Range("C" & Fila).Value)
Next Fila
End With
Else
With o_Hoja
For Fila = xFila To xRow - 1
BDRd.AddNew()
BDRd.Update("Mov", .Range("A" & Fila).Value)
BDRd.Update("FechaPol", .Range("B" & Fila).Value)
BDRd.Update("TipoPol", .Range("C" & Fila).Value)
BDRd.Update("NumPol", .Range("D" & Fila).Value)
Next Fila
End With
End If
BDRd.Close()
BDCn.Close()
BDRd = Nothing
BDCn = Nothing
o_Hoja = Nothing
o_Libro.Close()
o_Libro = Nothing
xFila = Nothing
Fila = Nothing
xRow = Nothing
MsgBox("Importación Terminada")
End Sub