
Cada mes, tengo el privilegio de compilar archivos diarios delimitados por barras verticales en un libro de Excel mensual. Utilizo el asistente de importación para convertir los archivos de texto en hojas de trabajo en el libro. Abro los 30 archivos a la vez y sigo las indicaciones del asistente para cada archivo. El asistente suele ser correcto al detectar que los archivos están delimitados por barras verticales. Pero una vez, y sólo una vez, de cada lote de archivos, cambia el tipo de archivo de "Delimitado" a "Ancho fijo". Cada archivo tiene el mismo formato, Fecha|Depto|Cuenta|Tipo|Monto, etc…. Cada campo contiene datos similares en todos los archivos. Todas las fechas tienen 8 caracteres; Todos los departamentos tienen 5 caracteres; todas las Cuentas tienen 6 caracteres; etc….
¿Por qué Excel de repente no reconoce el formato delimitado del archivo?
¿Por qué sólo 1 archivo del grupo?
¿Es asegurarse de que estoy prestando atención?
Esto sucede tanto en Excel 2013 como en Excel 365 Pro (MSO 16.0)
Respuesta1
Si comprende VBA, puede utilizar la siguiente macro, que le solicitará un nombre de archivo y forzará su importación delimitada por barras verticales:
Sub Test()
Dim Filter As String, Title As String
Dim FilterIndex As Integer
Dim FileName As Variant
' File filters
Filter = "Text Files (*.dat),*.dat," & "All Files (*.*),*.*"
' Default Filter to *.*
FilterIndex = 3
' Set Dialog Caption
Title = "Select a File to Open"
' Select Start Drive & Path
ChDrive ("G:")
ChDir ("G:\Scot\MS Excel")
With Application
' Set File Name to selected File
FileName = .GetOpenFilename(Filter, FilterIndex, Title)
' Reset Start Drive/Path
ChDrive (Left(.DefaultFilePath, 1))
ChDir (.DefaultFilePath)
End With
' Exit on Cancel
If FileName = False Then
MsgBox "No file was selected."
Exit Sub
End If
' Import File
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=Range("A1"))
.TextFileParseType = xlDelimited
.TextFileOtherDelimiter = "|"
.Refresh BackgroundQuery:=False
End With
End Sub
Ingrese sus propios valores para el código debajo de "Seleccione Iniciar unidad y ruta".