DoCmd.TransferText error 3051: "The Microsoft Access database engine cannot open or write to the file ''

Estoy tratando de en Access hacer un código que me lea los archivos csv de una carpeta, los inserte en una tabla creada y los mueva a otra carpeta.

Navegando en distintas páginas encontré el código el cual me iba a salvar la vida porque es la primera vea que me meto en estos líos y todo iba genial la verdad hasta que he llegado al momento leer de fichero DoCmd. TransferText y me da el error 3051. He probado de todo, borrar la tabla, crearla nueva, abrir el documento, mirar permisos y todo parece estar bien.

¿Alguien me sabe decir que puedo hacer?

Sub procesarTodosLosFicheros()
Const carpetaOrigen = "K:\ES\EMS\Des"
Const carpetaDestino = "K:\ES\EMS\Des\cargados"
ReDim matFich(1 To 1000) As String
Dim nFich As Integer
Dim i As Integer
Dim aux As String
On Error Resume Next
MkDir carpetaDestino
On Error GoTo 0
aux = Dir$(carpetaDestino & "\.", vbDirectory)
If aux = "" Then
MsgBox "Error: No se puede encontrar la carpeta destino de las copias. Proceso cancelado"
Exit Sub
End If
leerFicherosCarpeta carpetaOrigen, "*.txt", matFich(), nFich
For i = 1 To nFich
cargarFicheroEnTabla1 matFich(i)
Name matFich(i) As carpetaDestino & "\" & sinPath(matFich(i))
Next i
MsgBox "Todos los ficheros han sido procesados"
End Sub
Sub leerFicherosCarpeta(ByVal nomCarpeta As String, ByVal nombreComo As String, ByRef matFich() As String, ByRef nFich As Integer)
Dim d As String
nFich = 0
d = Dir$(nomCarpeta & "\" & nombreComo, vbArchive + vbNormal)
Do While d <> ""
nFich = nFich + 1
matFich(nFich) = nomCarpeta & "\" & d
d = Dir$
Loop
End Sub
Function sinPath(ByVal nomFich As String) As String
Do While InStr(nomFich, "\") > 0
nomFich = Right$(nomFich, Len(nomFich) - InStr(nomFich, "\"))
Loop
sinPath = nomFich
End Function

Sub cargarFicheroEnTabla1(ByVal nomFich As String)
Const nomTabla = "Denegados"
Dim nf As Integer
Dim linea As String
Dim auxI As Long
Dim auxD As Double
Dim auxF As Variant
Dim rs As Recordset
Dim longTotal As Double
Dim longLeida As Double
nf = FreeFile
On Error Resume Next
Open nomFich For Input As nf
If Err <> 0 Then
MsgBox "Error al abrir el fichero. Mensaje del sistema: " & vbCrLf & Error$ & _
vbCrLf & vbCrLf & "Proceso cancelado"
On Error GoTo 0
Exit Sub
End If
On Error GoTo 0
longTotal = LOF(nf)
Set rs = CurrentDb().OpenRecordset(nomTabla)
SysCmd acSysCmdInitMeter, "Cargando fichero en tabla " & nomTabla, longTotal
longLeida = 0
DoCmd.TransferText acImportDelim,, nomTabla, nomFich, True

Rs. Close
SysCmd acSysCmdClearStatus
End Sub

1 respuesta

Respuesta

Problemas de seguridad, Access carece de permisos en esa ubicación, por ello no abre o no puede escribir en ella.

Las importaciones y exportaciones de ficheros de tipo CSV, pueden ser problemáticas según la configuración regional de la maquina, espera como separador de listas la coma simple y en la versión castellano se aplica como separador de lista el punto y coma (la coma se utiliza como marcador decimal).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas