Как открыть все файлы Excel по одному и запустить макрос - PullRequest
6 голосов
/ 31 июля 2010

Мне нужно написать макрос в VBA, который будет открывать каждый файл в данном каталоге один за другим и запускать макрос на них.

пока у меня есть что-то вроде

for i = 1 to number_of_files
    open Dir("C:\yourPath\*.*", vbNormal)
    call some_macro
    close file
next i

Ответы [ 2 ]

11 голосов
/ 31 июля 2010

Вызывая функцию Dir() с соответствующим фильтром, таким как "c:\folder\*.xls", вы запускаете перечисление и получаете первое имя файла.
После этого, повторно вызывая функцию Dir() без каких-либо параметров, вы будетеполучить все *.xls имен файлов, по одному на каждый вызов.

Вы открываете книгу, вызывая Workbooks.Open(full_path).Это дает вам объект Workbook, для которого вы можете запустить макрос.

Метод .Close() этого объекта Workbook закрывает книгу.Вы можете использовать .Close(SaveChanges:=True), чтобы сохранить изменения, .Close(SaveChanges:=False), чтобы отменить изменения, или опустить параметр, чтобы пользователь принял решение.

0 голосов
/ 20 октября 2010

Вот простой способ сделать это с помощью объекта VBA:

Dim fs As FileSearch
Dim i As Integer
Dim wbk As Workbook

Set fs = Application.FileSearch

With fs
    .LookIn = ThisWorkbook.Path
    .FileName = "*.xls"
    For i = 1 to .Execute()
        Set wbk = Workbooks.Open(.FoundFiles(i))
        ''//RUN MACRO HERE
        wbk.Close(SaveChanges:=True)
    Next i
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...