Public Function Existe_Dir(Path)
On Error GoTo Existe_Dir_Err
If Not Dir(Path, vbDirectory) = vbNullString And Path <> "" Then
Existe_Dir = True
Else
Existe_Dir = False
End If
Existe_Dir_Exit:
Exit Function
Existe_Dir_Err:
Existe_Dir = False
Resume Existe_Dir_Exit
End Function
Public Function SeleccionarDirectorio()
'definimos las variables que emplearemos
Dim Titulo, Directorio As String
Titulo = "Selecciona la ruta de tu carpeta"
On Error Resume Next
'evitaría un error en caso de no seleccionar nada o pulsar ESC
With CreateObject("shell.application")
Directorio = .browseforfolder(0, Titulo, 0).Items.Item.Path
End With: On Error GoTo 0
'la siguiente instruccíon IF ejecuta una acción a modo de ejemplo
If Directorio = "" Then
MsgBox "No has marcado ningún directorio.", , "Operación no válida"
SeleccionarDirectorio = ""
Else
'MsgBox "Ha seleccionado la siguiente ruta " & Directorio
SeleccionarDirectorio = Directorio
End If
End Function
Public Function Lee_DataDir()
'Db será una base de datos:
Dim Db As Database 'Variable para las Bases de Datos
'Set Db = OpenDatabase("Nombre_Base_Datos")
Set Db = CurrentDb
Dim SQLTmp As String
Dim MySnap As Recordset
'SQLTmp = "select * from " & Nombre_Tabla & " <Consulta> " & " order by " & Clasificar
SQLTmp = "Reco_Dir"
Lee_DataDir = Null
'Set MySnap = Db.OpenRecordset(SQLTmp, dbOpenSnapshot)
Set MySnap = Db.OpenRecordset(SQLTmp, dbOpenSnapshot) "En esta línea da Error 13 en tiempo de ejecución"
Err = 0
MySnap.MoveFirst
If Err Then
Err = 0
'no hay datos, avisar
MsgBox "No hay datos almacenados de directorio", , "Directorios"
Exit Function
End If
MySnap.MoveFirst
Do Until MySnap.EOF
Lee_DataDir = MySnap!Directorio
'Debug.Print MySnap!Directorio
MySnap.MoveNext
Loop
MySnap.Close
End Function
Sub Graba_DataDir(Data_Directorio)
'Db será una base de datos:
Dim Db As Database 'Variable para las Bases de Datos
'Set Db = OpenDatabase("Nombre_Base_Datos")
Set Db = CurrentDb
Dim SQLTmp As String
Dim MySnap As Recordset
SQLTmp = "Reco_Dir"
'Lee_DataDir = Null
Set MySnap = Db.OpenRecordset(SQLTmp) ', dbOpenSnapshot)
Err = 0
MySnap.MoveFirst
If Err Then
Err = 0
'no hay datos, avisar
MsgBox "Existe un Error", , "Directorios"
Exit Sub
End If
'Añadir el resultado a un List
'List1.Clear
MySnap.MoveFirst
MySnap.Edit
MySnap!Directorio = Data_Directorio
MySnap.Update
MySnap.Close
End Sub
acá agrego el módulo desde donde llamo a la función:
Private Sub Importar_Click()
On Error GoTo Err_Importar_Click
Dim DirectorioFuente As String
Dim stDocName As String
Dim nombrearchivo As String
Dim MiArchivo, MiRuta, MiNombre
Dim D As String
D = Lee_DataDir
DirectorioFuente = D
DoCmd.SetWarnings False
DoCmd.RunMacro "01-Borra-las-Tablas-Actuales"
'stDocName = "02 Importa Archivos"
'DoCmd.RunMacro stDocName
'Ruta del DirectorioFuente
'DirectorioFuente = "F:\Informes SAP\201712\Val 10\Operandos\" "Este sería el directorio desde donde obtendría los datos"
ChDir DirectorioFuente
MiRuta = CurDir
'Nombre del archivo
nombrearchivo = "_29_12_17"
'Destino
MiArchivoB = "Destino" & nombrearchivo & ".txt"
'MsgBox MiArchivoB & " que recién armé"
MiArchivo = Dir(MiArchivoB)
'MsgBox MiArchivo & " que voy a validar"
If MiArchivo = "Destino" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "Destino", "Destino", DirectorioFuente & "Destino" & nombrearchivo & ".txt"
'DoCmd.CopyObject , "Destino", acTable, "Destino" & nombrearchivo & ""
DoCmd.CopyObject , "Destino" & nombrearchivo, acTable, "Destino"
Else
'MsgBox "No hay archivo de Operandos"
End If
'Expediente
MiArchivoB = "Expediente" & nombrearchivo & ".txt"
'MsgBox MiArchivoB & " que recién armé"
MiArchivo = Dir(MiArchivoB)
'MsgBox MiArchivo & " que voy a validar"
If MiArchivo = "Expediente" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "Expediente", "Expediente", DirectorioFuente & "Expediente" & nombrearchivo & ".txt"
DoCmd.CopyObject , "Expediente" & nombrearchivo, acTable, "Expediente"
Else
'MsgBox "No hay archivo de Operandos"
End If
'Movein
MiArchivoB = "Movein" & nombrearchivo & ".txt"
'MsgBox MiArchivoB & " que recién armé"
MiArchivo = Dir(MiArchivoB)
'MsgBox MiArchivo & " que voy a validar"
If MiArchivo = "Movein" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "Move-in_Move-out", "Movein", DirectorioFuente & "Movein" & nombrearchivo & ".txt"
DoCmd.CopyObject , "Movein" & nombrearchivo, acTable, "Movein"
Else
'MsgBox "No hay archivo de Operandos"
End If
'Moveout
MiArchivoB = "Moveout" & nombrearchivo & ".txt"
'MsgBox MiArchivoB & " que recién armé"
MiArchivo = Dir(MiArchivoB)
'MsgBox MiArchivo & " que voy a validar"
If MiArchivo = "Moveout" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "Move-in_Move-out", "Moveout", DirectorioFuente & "Moveout" & nombrearchivo & ".txt"
DoCmd.CopyObject , "Moveout" & nombrearchivo, acTable, "Moveout"
Else
'MsgBox "No hay archivo de Operandos"
End If
'Operandos
MiArchivoB = "Operando" & nombrearchivo & ".txt"
'MsgBox MiArchivoB & " que recién armé"
MiArchivo = Dir(MiArchivoB)
'MsgBox MiArchivo & " que voy a validar"
If MiArchivo = "Operando" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "Operandos", "Operando", DirectorioFuente & "Operando" & nombrearchivo & ".txt"
DoCmd.CopyObject , "Operando" & nombrearchivo, acTable, "Operando"
Else
'MsgBox "No hay archivo de Operandos"
End If
'Suministro
MiArchivoB = "Suministro" & nombrearchivo & ".txt"
'MsgBox MiArchivoB & " que recién armé"
MiArchivo = Dir(MiArchivoB)
'MsgBox MiArchivo & " que voy a validar"
If MiArchivo = "Suministro" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "Suministro", "Suministro", DirectorioFuente & "Suministro" & nombrearchivo & ".txt"
DoCmd.CopyObject , "Suministro" & nombrearchivo, acTable, "Suministro"
Else
'MsgBox "No hay archivo de Operandos"
End If
'UnidadLectura
MiArchivoB = "Unlec" & nombrearchivo & ".txt"
MiArchivo = Dir(MiArchivoB)
If MiArchivo = "Unlec" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "UnidadLectura", "Unlec", DirectorioFuente & "unlec" & nombrearchivo & ".txt"
DoCmd.CopyObject , "unlec" & nombrearchivo, acTable, "unlec"
Else
End If
'Divergentes
MiArchivoB = "Divergente" & nombrearchivo & ".txt"
'MsgBox MiArchivoB & " que recién armé"
MiArchivo = Dir(MiArchivoB)
'MsgBox MiArchivo & " que voy a validar"
If MiArchivo = "Divergente" & nombrearchivo & ".txt" Then
DoCmd.TransferText acImportDelim, "Divergentes", "Divergente", DirectorioFuente & "Divergente" & nombrearchivo & ".txt"
DoCmd.CopyObject , "Divergente" & nombrearchivo, acTable, "Divergente"
'MsgBox MiArchivo & " Está"
Else
'MsgBox "No hay archivo de Divergentes"
End If
DoCmd.RunMacro "Cerrar-lista-instal-exped"
DoCmd.SetWarnings True
Exit_Importar_Click:
Exit Sub
Err_Importar_Click:
MsgBox Err.Description
Resume Exit_Importar_Click
End Sub