2013-12-11 181 views
0

我是VB編程新手。我想將文本文件轉換爲excel文件。文本文件是用逗號分隔的,並且是Unicode文件。轉換後的excel文件應該包含全部文本格式的字段(爲了保留前綴零)。在將文本文件轉換爲以下代碼後,excel文件中的零將被截斷。首先,我將用逗號分隔的文本文件轉換爲製表符分隔符並加載製表符分隔的文本文件轉換爲excel。製表符分隔的文本文件格式爲文本的Excel文件

Const ForReading = 1 
Const ForWriting = 2 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("SOURCE_FILE_PATH.txt", ForReading,False,-1) 
strContents = objFile.ReadAll 
objFile.Close 
strContents = Replace(strContents, ",", vbTab) 
Set objFile = objFSO.OpenTextFile("SOURCE_FILE_PATH.txt", ForWriting, True, -1) 
objFile.Write strContents 
objFile.Close 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
Set objWorkbook = objExcel.Workbooks.Open(Wscript.Arguments.Item(0)) 
objWorkbook.Saveas WScript.Arguments.Item(1),51 
objWorkbook.Close False 
Set objWorkbook = objExcel.Workbooks.Open("Target_XLSX_FILE_PATH.xlsx") 
objExcel.Visible = True 
Set objRange = objExcel.Range("A:K") 
objRange.NumberFormat = "@"--converting to text format 
objExcel.Save 
objWorkbook.Close False 
objexcel.Quit 

在 集objWorkbook = objExcel.Workbooks.Open(Wscript.Arguments.Item(0)) 的製表符分隔的文件在與Genetal format.After各列加載的線I將其轉換成文本格式也是,零不會在那裏。 在此先感謝您的幫助。

+0

...那麼,有什麼問題? – Manhattan

+0

感謝您的回覆。在上面的腳本中,製表符分隔的文本文件在excel文件中以通用格式打開。但是我希望製表符分隔的文件應該以在Excel表格中格式化的文本形式打開。因此,我可以將前綴爲零。在腳本中,At最後我將列轉換爲文本格式。但設置objWorkbook = objExcel.Workbooks.Open(Wscript.Arguments.Item(0)) 行 – satish

回答

1

如果您在導入到Excel之前不打算對文本文件中的數據執行任何操作,則無需實際使用FSO

這是我的數據:

enter image description here

這是代碼:

Sub TextOpen() 
    arrtext = Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2)) 
    Workbooks.OpenText Filename:="C:\Users\jeromem\Desktop\BK201.txt", Comma:=True, FieldInfo:=arrtext 
End Sub 

這是運行後的結果:

enter image description here

檢查this˚F或OpenText方法和thisFieldInfo數據類型。如您所見,文本格式等於2

arrtext基本上讀爲for column 1 of text, apply format 2; for column 2 of text, apply format 2....。然後我們將這個數組提供給FieldInfo。我們還設置了Comma:=True,因爲這是您的文本文件中的分隔符。

讓我們知道這是否有幫助。

+0

後零已經丟失我想通過批處理腳本調用vb腳本?你請告訴如何通過批量調用這個腳本? – satish

+0

@santish:如果你必須通過'vbscript'完全做到這一點,繼續你的方式,但是用''''前面​​加上每個數字值。這樣,當它在Excel中打開時,它將首先顯示爲文本,然後在轉換爲文本時稍後刪除'''。 – Manhattan

+0

我有大約10000行。我無法每次手動爲每一列做手動操作。而且它也應該自動執行,無需通過批處理腳本進行任何手動干預。 – satish

相關問題