将CSV转换为Excel表格

时间:2016-12-05 13:18:44

标签: excel csv vbscript xlsx

我正在尝试将CS​​V文件转换为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

我想把它作为一张桌子。

2 个答案:

答案 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:=";"

希望这有帮助!