我有一个名为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关于如何修改代码,使其从单元格B2开始,逐行地将数据从Log.txt写入日志表,有什么建议吗?我不希望它在每一行的开头和结尾都包含引号。例如,第一行("test1...")第二行从B列(B2)开始进入第二行,第二行从B列开始进入第三行(B3),第三行进入第四行B列,依此类推。
发布于 2020-08-15 00:31:15
您需要的是将数组写入工作表范围,如下所示:
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发布于 2020-08-15 00:38:00
如果你只是想导入文件,你可以这样做:
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Filename, Destination:=Range("$B$2"))
.CommandType = 0
.Name = "log"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1257
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End Withhttps://stackoverflow.com/questions/63416179
复制相似问题