标签:VBA
Q:有一个文本文件,其内容包含很多以0开头的数字,如下图1所示,当将该文件导入Excel中时,Excel会将这些值解析为数字,删除了开头的“0”。
图1
我该如何将原值导入Excel工作表?
A:我们使用一个VBA自定义函数来解决。
VBA自定义函数代码如下:
代码语言:javascript复制Function My_OpenTextFile(strPath As String, strDelim As String) As Variant
Dim iFile As Integer
Dim varlineArray As Variant
Dim temp As String
Dim arrayList As Object
Set arrayList = CreateObject("System.Collections.ArrayList")
iFile = FreeFile
Open strPath For Input As #iFile
While Not EOF(iFile)
Line Input #iFile, temp
varlineArray = Split(temp, strDelim)
arrayList.Add varlineArray
Erase varlineArray
Wend
Close #iFile
My_OpenTextFile = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arrayList.ToArray()))
arrayList.Clear
Set arrayList = Nothing
End Function
该函数中,参数strPath是要导入的文本文件所在路径及文件名,参数strDelim是文本文件中用于分隔值的分隔符。
假设一个名为“myFile.txt”的文件存储在路径“C:test”中,可以使用下面的过程来调用这个自定义函数:
代码语言:javascript复制Sub test()
Dim var As Variant
'根据实际修改为相应的文件路径和分隔符
var = My_OpenTextFile("C:testmyFile.txt", ";")
With Range("A1").Resize(UBound(var, 1), UBound(var, 2))
.NumberFormat = "@" '修改为文本格式
.Value = var '插入数组值
End With
End Sub
这将打开指定的文本文件,并使用提供的分隔符将其读入,返回一个二维数组。然后,可以使用该数组来定位要放置数据的区域,并相应地设置格式。示例结果如下图2所示。