将包含数字形式的文本文件导入Excel中时保留文本格式的VBA自定义函数

2024-01-14 21:05:28 浏览数 (2)

标签: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所示。

0 人点赞