VBA脚本通过文件列表停止部分方式

时间:2016-11-22 19:31:24

标签: vba excel-vba excel

我有以下VBA代码,用于遍历给定文件夹并将特定类型的所有文件编译到一个工作表中。

  Sub cons_data()

Dim Master As Workbook
Dim sourceBook As Workbook
Dim sourceData As Worksheet
Dim CurrentFileName As String
Dim myPath As String
Dim LastRow As Long
Dim lRow As Long
Dim i As Long

Application.ScreenUpdating = False
Application.DisplayAlerts = False

'The folder containing the files to be recap'd
myPath = "path"

'Finds the name of the first file of type .xls in the current directory
CurrentFileName = Dir(myPath & "\*.txt*")

'Create a workbook for the recap report
Set Master = ThisWorkbook

For i = 1 To Master.Worksheets.Count
    With Master.Worksheets(i)
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row
        If lRow > 1 Then .Rows("2:" & lRow).ClearContents
    End With
Next i

Do
    Workbooks.Open (myPath & "\" & CurrentFileName)
    Set sourceBook = Workbooks(CurrentFileName)
    For i = 1 To sourceBook.Worksheets.Count
        Set sourceData = sourceBook.Worksheets(i)

        With sourceData
            LastRow = Master.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
            lRow = .Range("A" & .Rows.Count).End(xlUp).Row
            .Rows("2:" & lRow).Copy Master.Worksheets("Sheet1").Rows(LastRow + 1)
        End With
    Next i

    sourceBook.Close

'Calling DIR w/o argument finds the next .txt file within the current directory.
CurrentFileName = Dir()
Loop While CurrentFileName <> ""

MsgBox "Done"

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

此脚本在某些文件类型上运行正常,但出于某种原因,当在具有标准格式(其中一些是重复的)的文本文件列表上运行它时,它会停止并显示它正在处理的最新条目。单独的Excel工作表。有没有明显的理由来查看这可能发生的代码?

1 个答案:

答案 0 :(得分:-1)

您需要通过添加以下内容来终止旧进程并释放资源内存:<​​/ p>

Set sourceBook = nothing

sourceBook.close

希望这可以提供帮助