【发布时间】:2016-09-28 00:23:38
【问题描述】:
此功能旨在打开 CSV 文件,并将所有数据导入 Excel 工作簿上的特定工作表中。
但我认为在某些情况下我无法使用分隔符解决某种问题。
这是我的功能:
Sub LoopAllExcelFilesInFolder_Invenotry()
Dim strFilename As String
Dim wsMstr As Worksheet: Set wsMstr = ThisWorkbook.Sheets("ALL_ACTIUS")
If MsgBox("Erase sheet before start importing?", vbYesNo, "Delete?") _
= vbYes Then wsMstr.UsedRange.Clear
strFilename = Application.GetOpenFilename _
(FileFilter:="CSV File (*.csv), *.csv", _
Title:="Select CSV file: ")
Worksheets("ALL_MACHINES").Activate
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & strFilename, _
Destination:=Range("A1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
这是源代码(CSV 文件)的一部分,其中包含未按预期“翻译”的行:
在这里您可以看到这一行是如何转换为 Excel 的。 12X5" 字符串不应该在那里。第一列应该只包含 IP 地址。
我很确定这是一个分隔符问题,但我找不到解决方案。
【问题讨论】:
-
我认为问题与一个:“\n”或“\r”字符有关。有什么办法可以跳过吗?
-
无法在 Windows 上重现您的问题(尽管我没有在字符串 Server custom ... 中间换行)。当您在文本编辑器中打开文件时,12X5 是否像屏幕截图中显示的那样从新行开始?
-
是的,完全正确。 12X5 开始换行。
-
检查数据的来源。为什么它会在字符串中途中断而不是数据行?
-
这通常发生在文件使用 Unicode 编码而不是 ASCII / UTF-8 / ANSI 保存时,因此您可以尝试在记事本中使用 ANSI 或 UTF-8 编码保存文件