Entiendo que no quiere utilizar el asistente de importación de Access sino mediante un formulario y código VBA .
ASISTENTE DE ACCESS - "Descartado"
Lo hago utilizando un archivo .INI. para definir la configuración de las columnas.
ARCHIVO Schema.INI
Para hacerlo más simple solo defino 5 campos y de tipo texto. Los llamo campo1, campo2,... campo5, son los nombres de los campos para la tabla.
ARCHIVO Prueba.txt
FORMULARIO PARA DEFINIR LOS CAMPOS A IMPORTAR
Voy a importar solo los campos, campo1, campo3 y campo5, hago clic en Importar y obtengo.
Me ha creado la tabla que llamo tblimporta con 3 columnas, por simplicidad asigné el nombre de la tabla en el código pero se puede elegir de otra forma desde el mismo formulario.
CÓDIGO DEL BOTÓN IMPORTAR
Private Sub btnImportar_Click()
On Error GoTo hay_error
'Herramienta para importar archivo texto con
'definición de campos.
'Elaborado por: EDUARDO PEREZ FERNANDEZ
'Fecha: 24/07/2021
'Colombia
Dim strSQL As String
Dim strCampos As String
Dim ctrl As Control
For Each ctrl In Me.Controls
If ctrl.ControlType = acOptionButton Then
If ctrl.Value = True Then
strCampos = strCampos & "t." & ctrl.Tag & ","
End If
End If
Next ctrl
If strCampos = "" Then
MsgBox "Debe seleccionar al menos un campo", vbInformation, "Error.."
Exit Sub
End If
If existe() Then
DoCmd.DeleteObject acTable, "tblimporta"
End If
strCampos = Left(strCampos, Len(strCampos) - 1)
strCampos = "SELECT " & strCampos
strSQL = strCampos & vbCrLf
strSQL = strSQL & " INTO tblimporta FROM [Text;HDR=No;FMT=Delimited;Database=" & CurrentProject.Path & "].[Prueba.txt] AS t ;"
CurrentDb.Execute strSQL
If Err.Number = 0 Then
MsgBox "Tabla creada satisfactoriamente", vbInformation, "Importando"
CurrentDb. TableDefs. Refres
Este procedimiento requiere de una función para verificar si la tabla existe.
Function existe() As Boolean
Dim Tbl As AccessObject
For Each Tbl In CurrentData.AllTables
If Tbl.Name = "tblimporta" Then
existe = True
Exit For
End If
Next Tbl
End Function
Si quiere el ejemplo lo puede solicitar a [email protected], favor anotar en el asunto la consulta.