【问题标题】:Loop through folder of .TXT files and copy their contents循环浏览 .TXT 文件的文件夹并复制其内容
【发布时间】:2018-11-07 02:18:06
【问题描述】:

我正在尝试自动化以下操作:

  1. 打开 .TXT 文件
  2. 全选
  3. 复制
  4. 粘贴到 Excel 工作表上
  5. 重复

我在一个目录中有 150 个文本文件,我想打开它,复制所有内容并粘贴到 Excel 工作表中,偏移量为 'c'

每个文件正好有 95 行,例如在 A1 中粘贴 C:\myDir\MyFile1 之后。我想将下一个 .txt 文件的内容粘贴到 A101 中。

到目前为止,我已经拼凑了一些代码:

Sub LoopThroughFiles()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim StrFile As String
    Dim C as integer
    StrFile = Dir("E:\my path")

    Do While Len(StrFile) > 0
        Workbooks.Open(StrFile)
        Workbook.Sheets(1).Cells.Copy ws.range("A"& c)
        Workbook.Close
        C = C + 100     'Each txt file = 95 rows
        StrFile = Dir
    Loop
End Sub

虽然这不是遍历列表。

【问题讨论】:

  • Dim wb As Workbook 但变量从未设置。所以像Set wb = Workbooks.Open(StrFile) 这样你以后可以像wb.Sheets(1).Cells.Copy … 等一样使用它。而且ws 永远不会设置为任何工作表。 • 首先修复该问题,然后更新问题中的代码,并始终告诉您在哪一行中遇到了哪些错误。

标签: excel vba loops text


【解决方案1】:

您应该考虑使用 Excel 的“Power Query”加载项(在 Excel 2016 中,默认情况下在产品中)。 使用 Power Query,您将能够简单地选择文件所在的文件夹并非常轻松地附加所有数据,而无需任何编码。您还可以根据需要在 Power Query 编辑器中修改一次数据。

Power Query

example combining 2 files

Power Query UI

【讨论】:

  • 软件推荐在 StackOverflow 上是题外话,也可能显示为垃圾邮件。
【解决方案2】:

刚刚为包含工作簿csvWb 并连接folder 的工作簿添加了一个变量(以防excel 文件不在文件夹中)。此外,Excel 不喜欢复制多个在目标中重叠的整张工作表,因此让我们将自己限制为Rows("1:95")(这样可以节省内存和时间)。故意省略任何错误处理(文件可能被锁定)以保持示例简短。

Sub LoopThroughFiles()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim StrFile As String
    Dim C As Integer
    Dim csvWb As Workbook
    Dim folder As String
    folder = "E:\my path\"
    StrFile = Dir(folder)

    Set ws = ThisWorkbook.ActiveSheet
    C = 1
    Do While Len(StrFile) > 0
        Set csvWb = Workbooks.Open(folder & StrFile)
        csvWb.Sheets(1).Rows("1:95").Copy ws.Range("A" & C) 'Each txt file = 95 rows
        csvWb.Close
        C = C + 100     'Each txt file = 95 rows
        StrFile = Dir
    Loop
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多