一个Excel用户定义的函数来读取CSV文件?

我正在寻找一个VBA用户定义的函数,它将读取一个.csv文件的内容,并返回结果作为一个数组来填充工作表的单元格,即像这样的东西:

=CSV_Read("path/to/file.csv") 

我发现这个,但看起来专有/共享软件。 有谁知道任何替代品? 或者在VBA中使用自己的最佳方法是什么?

在您的VBA代码中,添加对“Microsoft脚本运行时”的引用。
添加一个模块,粘贴下面的代码。

 Option Explicit Public Function CSV_Read(ByVal path As String) As Variant Dim fso As Scripting.FileSystemObject Dim tsm As Scripting.TextStream Dim data Dim text As String Dim allRowsInArray As Variant Dim currentLineToArray As Variant Dim columnCount As Integer Dim columnCounter As Integer Dim rowCounter As Integer Dim rowCount As Integer Set fso = New Scripting.FileSystemObject Set tsm = fso.OpenTextFile(path, ForReading) rowCounter = 0 If Not tsm.AtEndOfStream Then text = tsm.ReadAll tsm.Close Set tsm = Nothing Set fso = Nothing allRowsInArray = Split(text, vbCrLf) rowCount = UBound(allRowsInArray) Do While rowCounter < (rowCount + 1) currentLineToArray = Split(allRowsInArray(rowCounter), ",") If Not IsArray(data) Then columnCount = UBound(currentLineToArray) ReDim data(rowCount, columnCount) End If For columnCounter = 0 To columnCount data(rowCounter, columnCounter) = currentLineToArray(columnCounter) Next rowCounter = rowCounter + 1 Loop End If CSV_Read = data End Function 

示例CSV文件数据

 a,b,c,d,e,f,g 1,2,3,4,5,6,7 7,6,5,4,3,2,1 q,w,e,r,t,y,u 

看数据,它有7列4行。

现在,转到单元格A1并select单元格A1到G4的范围。
在单元格A1中input公式( =CSV_Read("the full path to your csv file") (保持原样)。

重要:
input公式后,按下CTRL + SHIFT + ENTER 。 这是数组公式。