Применение основной рабочей книги VBA к 1000 файлам не работает - PullRequest
0 голосов
/ 20 марта 2020

Следуя инструкциям по этому более старому вопросу стекового потока , я попытался запустить свой макрос со следующим кодом:

Sub ay1()
Dim fileName, Pathname As String
Dim wb As Workbook
Pathname = "/Users/ayy/Downloads/Folder1/STATS1/"
fileName = Dir(Pathname & "*.csv")
Do While fileName <> ""
    Set wb = Workbooks.Open(Pathname & fileName)
    DoWork wb
    wb.Close SaveChanges:=True
    fileName = Dir()
    Loop
End Sub

Sub DoWork(wb As Workbook)

With wb


    Selection.AutoFilter
            ActiveSheet.Range("$A$1:$C$191").AutoFilter Field:=3, Criteria1:="="
            Range("C2:C190").Select
            Selection.EntireRow.Delete
            ActiveSheet.Range("$A$1:$C$96").AutoFilter Field:=3
            Range("E95").Select
            ActiveWorkbook.Save
            ActiveWindow.Close

    End With
End Sub

Я попытался сохранить это в «основной рабочей книге», которая включена поддержка макросов в том же каталоге, где находятся все мои CSV-файлы. Затем я нажал запустить макрос и выбрал ay1.

По какой-то причине он не работает ни на одном из моих файлов, и мне интересно, почему это так. Я не получаю никаких ошибок, и с моими файлами тоже ничего не делается.

Любая помощь или руководство будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 марта 2020

Использование блока With: вам нужно t ie ваши ссылки на wb с ведущим .

Sub DoWork(wb As Workbook)

    With wb.Sheets(1)
        .UsedRange.AutoFilter
        .Range("$A$1:$C$191").AutoFilter Field:=3, Criteria1:="="
        .Range("C2:C190").EntireRow.Delete
        .Range("$A$1:$C$96").AutoFilter Field:=3
    End With
    wb.Save
    wb.Close
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...