2013-12-11 247 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

相关问题