Importar archivo excel a access

Intento importar un fichero excel a access, para cargarlo en una tabla ya creada que tiene 3 campos (tipo, numero y entrega) los dos primeros son de texto y el tercero es de tipo fecha. El fichero excel está compuesto también de 3 columnas, sin títulos de cabecera.
En primer lugar selecciono el fichero a través de FileDialog mediante una función denominada "BuscarArchivo()" y verifico a través de un MsgBox que la ruta sea correcta (solo en fase de pruebas):
strPath = BuscarArchivo()
strPath = Trim(strPath)
' solo para verificar la ruta y archivo seleccionado
MsgBox "strPath = " & strPath

A continuación procedo a cargar el fichero excel a la tabla determinada:
strNomTabla = "AUXILIAR CARGA EXCEL ALTA NUEVOS TERMINALES"
DoCmd.TransferSpreadsheet acImport, 8, strNomTabla, strPath, False

Me muestra el error siguiente:
Se ha producido el error '2391' en tiempo de ejecución:
El campo 'F1' no existe en la tabla de destino
'AUXILIAR CARGA EXCEL ALTA NUEVOS TERMINALES'.

La verdad es que no se a que se refiere con lo del campo 'F1', ya que solo existen 3 columnas en el fichero excel.
¿Me podéis indicar que es lo que estoy haciendo mal?

1 Respuesta

Respuesta
1
A veces, cuando operas en Excel, te quedan "cosas" por ahí perdidas que, aunque tú no las veas, han quedado "latentes" en la hoja de cálculo (porquería, en pocas palabras).
Cuando me he encontrado con este problema lo que he hecho ha sido crear un Excel nuevo. Me voy al Excel con la información y copio SOLO las columnas que deben importarse, y las pego en ese Excel nuevo. Guardas, cambias nombres de archivo (si es el caso) y se acabó.
Si hago lo anterior la importación me funciona correctamente.
Ya me dirás cosas de cómo te ha ido.
Me "encanta" reconocer que he hecho el primo con tu consulta (aunque lo que te comentaba en mi anterior respuesta es del todo cierto). El problema es que siempre que había hecho importaciones de Excel a Access lo hacía manualmente y, pecando de un exceso de confianza, he supuesto que esto del código debía ser lo mismo. Mea culpa :(
Te explico:
El mensaje te sale porque Access no reconoce la asignación del nombre de tus campos al número de columna. Para el código, que tu campo se llame "CodProd", por ejemplo, no le da ninguna información de qué columna es la que contiene el dato (sé que eso parece que va en contra de la lógica de primer campo->primera columna, pero Access es así :S). ¿Solución de Access? Nada más y nada menos que llamar, al primer campo F1, al segundo F2 y así sucesivamente.
Tenemos dos soluciones para este asunto:
1ª: Abres la tabla y cambias los nombres de los campos por F1, F2 y F3 (porque me comentas que sólo quieres imortar tres columnas).
2ª Abres el Excel y añades una línea de encabezados, y en cada columna le pones el nombre del campo (ojo, debe estar escrito exactamente igual a los nombres que tienes en la tabla). Además de esto, debes modificar el código de VBA de la siguiente manera:
DoCmd.TransferSpreadsheet acImport, 8, strNomTabla, strPath, True
Ahora debería, con uno u otro sistema, funcionarte sin darte errores.
Ya me dirás cómo te ha ido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas