首页 > 解决方案 > 将数据从文本文件导入 Excel

问题描述

我有一个名为 Log.txt 的制表符分隔的文本文件,我使用宏写入该文件。以下是文本文件的内容:

"test1  test1   test1   test1   test1   test1   test1   test1   test1   test1   test1   test1   test1   test1   test1   test1   test1   test1"
"test2  test2   test2   test2   test2   test2   test2   test2   test2   test2   test2   test2   test2   test2   test2   test2   test2   test2"
"test3  test3   test3   test3   test3   test3   test3   test3   test3   test3   test3   test3   test3   test3   test3   test3   test3   test3"
"test4  test4   test4   test4   test4   test4   test4   test4   test4   test4   test4   test4   test4   test4   test4   test4   test4   test4"

我想将文本文件的每一行(目前为 4 行,但会随着时间扩展)写入电子表格中名为“Log”的工作表,从单元格 B2 开始。每行有 18 个单元格的数据。这是我到目前为止的代码:

Sub Refresh_Log()
Dim Str As String, FileNum As Integer, FileName As String, Arr() As String
FileNum = FreeFile()
FileName = "P:/Log.txt"
ReDim Arr(17, 0)
Open FileName For Input As #FileNum
While Not EOF(FileNum)
    Line Input #FileNum, Str
    For i = 0 To 17
        Arr(i, UBound(Arr, 2)) = Split(Str, Chr(9))(i)
    Next i
    ReDim Preserve Arr(17, UBound(Arr, 2) + 1)
Wend
Close #FileNum
End Sub

有关如何更改代码以使其将数据从 Log.txt 逐行写入日志表的任何提示,从单元格 B2 开始?我不希望它在每行的开头和结尾包含引号。例如,第一行 ("test1...") 将从 B 列 (B2) 开始进入第 2 行,第二行将从 B 列 (B3) 开始进入第 3 行,第三行将进入第 4 行 B 列,等等

标签: excelvba

解决方案


您想要的是将数组写入工作表范围,如下所示:

With Sheets("Log")
    .Range("B2").Resize(UBound(Arr, 1) - LBound(Arr, 1) + 1, UBound(Arr, 2) - LBound(Arr, 2) + 1).Value2 = Application.WorksheetFunction.Transpose(Arr)
End With

推荐阅读