制表符分隔文本文件到Excel文件格式化文本

时间:2013-12-11 05:21:10

标签: excel-vba vbscript format vba excel

我是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格式将制表符分隔文件加载到各种列中。在将其转换为文本格式之后,零也不会存在。  在此先感谢您的帮助。

1 个答案:

答案 0 :(得分: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获取OpenText方法,this查看FieldInfo数据类型。正如您所见,文本格式等于2

arrtext基本上被理解为for column 1 of text, apply format 2; for column 2 of text, apply format 2....。然后,我们将此数组提供给FieldInfo。我们还设置了Comma:=True,因为这是文本文件中的分隔符。

如果有帮助,请告诉我们。