【问题标题】:Looping through text files循环遍历文本文件
【发布时间】:2017-09-16 16:31:44
【问题描述】:

我想知道是否有人可以提供帮助。我创建了一个记录器,其中多个用户进入 excel,用户表单将记录所有详细信息。每个用户都有一个单独的文件,然后一个主工作表将在他们的 Excel 工作表中拉循环以获取数据并将其完全拉出。

我们现在有了一个新系统,可以提取文本文件(不幸的是只有 txt 文件)。

我现在已将所有用户设置为将他们的个人数据导出为 txt 文件。但是,我现在遇到了主表循环遍历数据并在下面添加下一个用户的问题。

我的旧代码是:

Sub Theloopofloops()

Dim wbk As Workbook
Dim Filename As String
Dim path As String
Dim rCell As Range
Dim wsO As Worksheet

path = "L:\MK\Logger\"
Filename = Dir(path & "*.xlsm")
Set wsO = ThisWorkbook.Sheets("Master")

Do While Len(Filename) > 0
    DoEvents
    Set wbk = Workbooks.Open(path & Filename, True, True)
        For Each rCell In wbk.Worksheets("Calls").Range("A2:A2000").Cells
            If rCell <> "" And rCell.Value <> vbNullString And rCell.Value <> 0 Then
                wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(, 16).Value = rCell.Resize(, 16).Value
            End If
        Next rCell
    wbk.Close False
    Filename = Dir
Loop

显然这是在工作簿中循环。 任何帮助将不胜感激。

谢谢,

【问题讨论】:

  • 查看 FSO 的 TextStream 功能。它说的是 VBScript,但它也与 VBA 有关msdn.microsoft.com/en-us/library/312a5kbt(v=vs.84).aspx
  • this answer
  • @Comintern 感谢您的帮助,我发现它很有帮助,但是我希望了解如何在同一目录中循环访问不同的文本文件以添加到最后一次导入的下方。如果这有意义?
  • 您已经对该部分进行了编码。链接答案中的代码进入您的 Dir 循环。
  • @Comintern 抱歉,我知道这是漫长的一天,所以我可能在这里遗漏了一些简单的东西。我正在那里输入信息,它实际上根本不起作用。我正在介入,它根本没有发现任何错误,但只导入了第一个 txt 文件并且不循环遍历目录

标签: vba excel loops text bigdata


【解决方案1】:

只需将现有循环中的工作簿代码替换为从文本文件中读取的代码即可。请注意,这是逐行检索数据,因此下面的示例仅将整行写入 A 列。如果数据需要进一步处理成列,您可以在循环内执行此操作,也可以将结果字符串和行号传递给另一个Sub 正在处理中。

Sub Theloopofloops()
    Dim Filename As String
    Dim path As String

    path = "L:\MK\Logger\"
    Filename = Dir(path & "*.xlsm")
    With ThisWorkbook.Sheets("Master")
        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, 1).End(xlUp)
        Do While Len(Filename) > 0
            Dim handle As Integer
            handle = FreeFile
            Open path & Filename For Input As #handle
            Do Until EOF(handle)
                Line Input #handle, Data
                .Cells(lastRow, 1) = Data
                lastRow = lastRow + 1
            Loop
            Close #handle
            Filename = Dir
        Loop
    End With
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多