我正在尝试将CSV文件转换为xls。
CSV文件如下所示:
410E 54B9 C700 0 0 0 0
但转换完成后,结果为
410E;54B9;C700;0;0;0;0
Const xlDelimited = 1
Const xlTextQualifierDoubleQuote = 1
Const xlOpenXMLWorkbook = 51
Set xl = CreateObject("Excel.Application")
xl.Workbooks.OpenText "C:\sssss.csv", , , xlDelimited _
, xlTextQualifierDoubleQuote, True, True, True, True, True, True, _
, Array(Array(1,2), Array(2,2), Array(3,2), Array(4,1), Array(5,2) _
, Array(6,1), Array(7,1), Array(8,1), Array(9,1), Array(10,1), Array(11,1))
Set wb = xl.ActiveWorkbook
wb.SaveAs "C:ssss.xlsx", xlOpenXMLWorkbook, , , , False
wb.Close
xl.Quit
我想把它作为一张桌子。
答案 0 :(得分:1)
Excel非常特别关注它作为CSV接受的内容。将文件重命名为.csv以外的其他内容(例如C:\sssss.txt
),代码应该按预期工作。否则,您需要更改文件的内容(用逗号分隔分号)以符合Excel的期望。
答案 1 :(得分:1)
你使用的参数比你需要的多得多,这应该可以胜任:
Workbooks.OpenText Filename:="C:\ssss.csv", _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, Space:=True
话虽如此,如果您在CSV中使用的字符不同于普通空格字符,则可能需要使用此字符:
Workbooks.OpenText Filename:="C:\ssss.csv", _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, Other:=True, OtherChar:=" "
将Space中的空格字符复制并粘贴到OtherChar之后的双引号之间。
但是,正如Ansgar所说,如果文件扩展名是.csv,则Excel会忽略所有这些规则,只需将文件作为CSV打开。
您可以使用Name
重命名该文件,或者您可以继续打开该文件并在导入后直接向列函数添加文本:
Range("A:A").TextToColumns Destination:=Range("A:A"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:=";"
希望这有帮助!