2016-12-05 154 views
0

我试图将CSV文件转换为xls。将CSV转换为Excel表

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 

我想把它当作一个表。

回答

1

Excel对它作为CSV接受的内容非常特别。将文件重命名为.csv以外的文件(例如C:\sssss.txt),代码应该按照您的预期工作。否则,您需要更改文件的内容(用逗号代替分号)以符合Excel的预期。

+0

但我想从.csv转换为xls而不是从txt转换为xls。 – user3657176

+1

@ user3657176更改扩展名不会改变有关文件内容的任何内容。 –

+0

我知道,但我会从csv做到excel而无需将csv更改为txt,然后将其转换。 – user3657176

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:=" " 

复制并从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:=";" 

希望这有助于!

+0

它不起作用 – user3657176

+0

该评论与迟到8个月的回复一样有用。为什么它不工作?问题是什么?什么部分不起作用? –