Error de formato en importación de excel a access

Tengo este código que amablemente me facilitó el experto Eduardo. Me funciona perfectamente pero tengo un problema hay un campo en la tabla ESTRUCTURA BÁSICA_tmp que lo tengo identificado como tipo texto sin embargo cuando hago la importación me sale errores de importación y no me pinta los campos que no son numéricos, el campos se llama FINCA la mayoría son números y solo algunos de ellos tienen algún caracter que hace que no se importen. Es como si por defecto lo tomase todo como formato numérico. ¿Qué podría hacer?

Private Sub Comando3_Click()
SQL = "DELETE * FROM [ESTRUCTURA BÁSICA_tmp];"
CurrentDb.Execute SQL
SQL = "DELETE * FROM [HISTORICO SITUACIONES_tmp];"
CurrentDb.Execute SQL

Dim i As Integer
Dim FileName As String
' Requiere referencia a Microsoft Office 11.0 Object Library.

Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.InitialFileName = CurrentProject.Path & "\FICHERO.xlsx"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.Title = "Seleccione el archivo"
.Filters.Clear
.Filters.Add "FICHERO", "*.xlsx"
If .Show = True Then
FileName = .SelectedItems(1)
Else
MsgBox "Ha cancelado la operación.", vbInformation, "Importar Excel a Access"
Exit Sub
End If
End With
If Len(FileName) > 0 Then 'Comprobamos que se haya seleccionado correctamente el archivo.
FileName = fDialog.InitialFileName
DoCmd. TransferSpreadsheet acImport, 10, "ESTRUCTURA BÁSICA_tmp", FileName, True, "ESTRUCTURA BÁSICA!"
DoCmd. TransferSpreadsheet acImport, 10, "HISTORICO SITUACIONES_tmp", FileName, True, "HISTÓRICOSIT COM VENTA!"
If Err.Number = 0 Then
MsgBox "Hojas importadas OK", vbInformation, "Le informo"
End If
Else
MsgBox "No ha seleccionado un archivo para procesar.", vbInformation, "Importar Excel a Access"
End If

End Sub

2 respuestas

Respuesta
1

Si quiere envíeme la estructura de las tablas y del archivo de Exece para no entrar en explicaciones que no tienen sentido a [email protected]

Se lo envío

Me da error en el envío. De todas formas valoro la respuesta.Gracias

Suba a WeTransfer.

Respuesta
1

Si el origen (el fichero de Excel) y el destino (la tabla de Access) mantienen el mismo formato entre importaciones, lo idóneo es que la primera vez se cree una especificación de importación, se guarde con un nombre y se utilice el resto de las veces.
Se obtendrá el formato deseado sin complicaciones.

Si los orígenes son diversos (proceden de diferentes sitios pero con el mismo destino) se guardan las diferentes especificaciones y utilizan según convenga.
En definitiva: al igual que se selecciona el fichero de origen, también se puede seleccionar la especificación adecuada y aplicarla, incluso se puede guardar esa relación para automatizarla.

No entiendo muy bien lo de las especificaciones, ¿me lo puede ampliar? Gracias

En la opción que hay en Access para obtener datos externos (sea vinculando o importando) esta la de obtener datos de EXCEL.

Si se selecciona esa opción y se siguen los pasos del asistente (seleccionar las columnas y el tipo de datos) al final pregunta si se desea conservar las opciones creadas (es el equivalente a una plantilla), en el caso de aceptar solicita un nombre que guardara internamente.
La próxima vez que se necesite repetir la vinculación/importación se puede reutilizar la o las guardadas anteriormente y automatizar el trabajo.

Ya en este punto tienes la libre opción de depender de otros para que te den un trabajo puntual o la libertad de aprender un poco mas de Access y crecer en conocimientos que no se adquieren con un Copy&Paste.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas