Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Importacion de Excel, usando headers especificos

Estas en el tema de Importacion de Excel, usando headers especificos en el foro de Bases de Datos General en Foros del Web. Bueno, pues a los tumbos he aprendido Access a niveles aceptados y pues mayormente merodeando por Google. Ahora me hallo en una disyuntiva, ya que ...
  #1 (permalink)  
Antiguo 23/09/2011, 11:50
 
Fecha de Ingreso: agosto-2011
Ubicación: Xalapa
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 0
Importacion de Excel, usando headers especificos

Bueno, pues a los tumbos he aprendido Access a niveles aceptados y pues mayormente merodeando por Google. Ahora me hallo en una disyuntiva, ya que quiero subir archivos Excel y con ellos llenar una tabla.

El boton para buscar el archivo y tener la ruta y todo eso, ya està mas que listo, ahora el problema viene al aceptar los archivos de excel, ya que al tenerlo listo y todo, al usar el TransferSpreadSheet quiero usar solo 3 columnas de ese excel, el nombre, el id y el importe pagado. No necesito ningun otro dato como fecha, plazo o cosas d esas, lo unico que necesito son esos tres datitos, y no creo haya problema pues los formatos de los excel tienen el mismo numero de columnas, mas no el mismo numero numero de rows, ya algunos tienen desde 1249 registros hasta donde hay unos que tienen solo 15. Estaba pensando en usar alguna variaciòn de lo que es el usedrange para poder definir el nùmero de longitud aunque me regresa siempre algo del tipo $A$1:$X$123, en ese formato cuando yo lo que quiero es tener solo el 1 y el 123 jeje. Ese es un problema.

Otro es, que no quiero importar los headers, ya que el formato dado por los que manejan los excel, generalmente contadores, es un tanto raro, y en los headers siempre ponen caracteres raros o puntos, lo unico que me interesa entonces es la informaciòn pura, pero al poner entre el rango del TransferSpreadSheet y que no tome los headers, siempre me manda un error de que no halla el registro F1. Entonces ese es el otro problema.

Y el tercer y ultimo problema esque el formato no empieza casi nunca en A1, de hecho todos empiezan en C4 entonces queria ver como deberia ser sin tener problemas con lo de que no inicie asi, ya que es una perdida de tiempo abrir excel por excel y modificarlos para que sean en formato que empieza en A1.

Acà anexo mi còdigo:

Código:
Private Sub busca_Click()
Dim strFilter As String
    Dim strInputFileName As String

strFilter = ahtAddFilterItem(strFilter, "*.xls", "*.xls")
Me.RutaMaster.value = ahtCommonFileOpenSave( _
                Filter:=strFilter, OpenFile:=True, _
                DialogTitle:="Selecciona el archivo...", _
                Flags:=ahtOFN_HIDEREADONLY)
End Sub
Private Sub guarda_Click()
    Dim xlobj
    Dim wsobj
    Dim rngobj
    'Set xlobj = GetObject(Me.RutaMaster)
    'Set wsobj = xlobj.worksheets("6A42 AREA 30")
    'Set rngobj = wsobj.usedrange
    'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "PIVNOMRECIB", Me.RutaMaster, True, "A" & rngobj.Address & ":B" & rngobj.Address & ""
    'Set xlobj = Nothing
     DoCmd.TransferSpreadsheet acImportDelim, acSpreadsheetTypeExcel97, "AUXNOMRECIB", Me.RutaMaster, True
     
End Sub
Espero alguien pueda ayudarme ya que llevo como 15 horas leyendo y leyendo sin poder hallar una soluciòn plausible.

Saludos!
  #2 (permalink)  
Antiguo 27/09/2011, 21:14
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
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

Etiquetas: access, excel, headers, importacion, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:12.