2016-12-05 233 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個月的回覆一樣有用。爲什麼它不工作?問題是什麼?什麼部分不起作用? –