我无法弄清楚如何使用Excel VBA读取简单的CSV文件。
如果我想打开并读取一个csv文件,只要文件路径是一个有效的字符串,这条语句就足够了。
' Open file and read contents
Open FilePath For Input As #1
FileContent = Input(LOF(1), 1)
Close #1
然后,我想创建一个二维数组,有行和列。我认为这应该能起到作用,但事实并非如此。
' Split file content into rows
RowsArray = Split(FileContent, vbCrLf)
' Split rows into columns
Dim i As Long
For i = LBound(RowsArray) To UBound(RowsArray)
ColumnsArray = Split(RowsArray(i), ",")
Next i
它不会给予错误,但columns数组为空,
整个函数在这里:
Public Function ReadCSVFileInToArray(FilePath)
' Define variables
Dim FileContent As String
Dim RowsArray() As String
' Open file and read contents
Open FilePath For Input As #1
FileContent = Input(LOF(1), 1)
Close #1
' Split file content into rows
RowsArray = Split(FileContent, vbCrLf)
' Split rows into columns
Dim i As Long
For i = LBound(RowsArray) To UBound(RowsArray)
ColumnsArray = Split(RowsArray(i), ",")
Next i
ReadCSVFileInToArray = ColumnsArray
End Function
我怀疑RowsArray和ColumnsArray都需要重定维度,但是在拆分它们之前如何知道维度呢?
看起来这应该很简单,所以我显然不明白什么。我甚至在网上找不到一个合理的解释。
4条答案
按热度按时间axzmvihb1#
让excel来做这项工作
拆分第一行以获得第二维。
brjng4g32#
CSV界面是您解决问题所需的工具。请检查documentation。
pgky5nke3#
以二维数组形式返回CSV文件的值
示例(用法)
PrintData
过程here。行到一维数组
将一维数组拆分为二维数组
xoefb8l84#
我调整了您的代码,并在代码中添加了解释(参见注解)
你可以用
将import text files导入Excel的更好方法是Powerquery,因为您可以对数据类型等进行更多控制。