Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/09/2011, 21:14
Daviel
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 16 años
Puntos: 1
Respuesta: Importacion de Excel, usando headers especificos

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 original
  1. Sub CargarDesdeExcel()
  2.         Dim o_Hoja, o_Excel, o_Libro As Object
  3.         o_Excel = CreateObject("Excel.Application")
  4.         Dim xFila, Fila, xRow As Integer
  5.         xRow = 1
  6.         o_Libro = o_Excel.WorkBooks.Open("Ruta de tu libro de excel")
  7.         o_Hoja = o_Libro.Worksheets("hoja de tu libro")
  8.         'cuento las filas con datos de la hoja partiendo de la celda A1, A2,
  9.        'o la que gustes donde los datos sean continuos y sin espacios en blanco para obetener el numero de filas
  10.        While Not o_Hoja.Range("A" & xRow).Value = Nothing
  11.             xRow = xRow + 1
  12.         End While
  13.         'condiciono la carga de los datos de la hoja en caso de que la misma tenga rotulos o no
  14.        'asignandole a xFila el valor de la fila donde quiero que inicie el bucle que la carga de datos
  15.        Select Case TieneRotulosElLibroChk.Checked
  16.             Case False
  17.                 xFila = 1
  18.             Case True
  19.                 xFila = 2
  20.         End Select
  21.         Dim BDCn As New ADODB.Connection
  22.         Dim BDRd As New ADODB.Recordset
  23.         BDCn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TuRuta & ";Persist Security Info=False;Jet OLEDB:DataBase Password=hu9rethu")
  24.         BDRd.Open("TuTabla", BDCn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
  25.         If Not BDRd.BOF Then
  26.             With o_Hoja
  27.                 'Recorro la hoja de excel
  28.                For Fila = xFila To xRow - 1
  29.                     BDRd.AddNew()
  30.                     'agrego a mi base de datos los valores de las celdas que yo le estoy indicando
  31.                    BDRd.Update("Mov", .Range("A" & Fila).Value)
  32.                     BDRd.Update("FechaPol", .Range("B" & Fila).Value)
  33.                     BDRd.Update("TipoPol", .Range("C" & Fila).Value)
  34.                 Next Fila
  35.             End With
  36.         Else
  37.             With o_Hoja
  38.                 For Fila = xFila To xRow - 1
  39.                     BDRd.AddNew()
  40.                     BDRd.Update("Mov", .Range("A" & Fila).Value)
  41.                     BDRd.Update("FechaPol", .Range("B" & Fila).Value)
  42.                     BDRd.Update("TipoPol", .Range("C" & Fila).Value)
  43.                     BDRd.Update("NumPol", .Range("D" & Fila).Value)
  44.                 Next Fila
  45.             End With
  46.         End If
  47.         BDRd.Close()
  48.         BDCn.Close()
  49.         BDRd = Nothing
  50.         BDCn = Nothing
  51.         o_Hoja = Nothing
  52.         o_Libro.Close()
  53.         o_Libro = Nothing
  54.         xFila = Nothing
  55.         Fila = Nothing
  56.         xRow = Nothing
  57.         MsgBox("Importación Terminada")
  58.     End Sub