将CSV转换为Excel表格
我正在尝试将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
我想要它作为一个表。
Excel对于它接受的CSV非常特别。 将文件重命名为.csv以外的文件(例如C:\sssss.txt
),代码应该按照您的预期工作。 否则,您需要更改文件的内容(用逗号代替分号)以符合Excel的期望。
你使用了比你需要的更多的论据,这应该做的工作:
Workbooks.OpenText Filename:="C:\ssss.csv", _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, Space:=True
话虽如此,如果您在CSV中使用的空间字符types不是普通空格字符,则可能需要使用以下命令:
Workbooks.OpenText Filename:="C:\ssss.csv", _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, Other:=True, OtherChar:=" "
将CSV中的空格字符复制并粘贴到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:=";"
希望这可以帮助!