每个月,我都有权利将每日的竖线分隔文件编译成每月的 Excel 工作簿。我使用导入向导将文本文件转换为工作簿中的工作表。我一次打开所有 30 个文件,并按照向导的提示对每个文件进行操作。向导通常可以正确地检测到文件是否是竖线分隔的。但是,在每一批文件中,只有一次,它会将文件类型从“分隔”更改为“固定宽度”。每个文件的格式都相同,日期|部门|帐户|类型|金额等……所有文件中的每个字段都包含类似的数据。所有日期都是 8 个字符;所有部门都是 5 个字符;所有帐户都是 6 个字符;等等……
为什么 Excel 突然无法识别文件的分隔格式?
为什么一堆文件中只有 1 个文件?
这是为了确保我能集中注意力吗?
Excel 2013 和 Excel 365 Pro (MSO 16.0) 中都会发生这种情况
答案1
如果您了解 VBA,则可以使用以下宏,它将要求输入文件名并强制将其以竖线分隔的形式导入:
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
在“选择启动驱动器和路径”下方输入您自己的代码值。