Мы не пишем ваш код для вас и не думаем о вас здесь, в SuperUser, поэтому вам нужно научиться программировать на VBA, а не просто записывать макрос и надеяться, что он сделает всю вашу работу за вас. , То, что вы пытаетесь сделать, включает использование нескольких простых API. Поскольку вы, похоже, не знаете, что это за API, позвольте мне указать их для вас.
- Вы захотите использовать объект
FileSystemObject
чтобы составить список содержимого каталога, содержащего файлы, которые вы хотите открыть.
- Начните с получения дескриптора объекта
Folder
содержащего файлы, которые необходимо обработать; это можно получить с помощью метода GetFolder объекта FileSystemObject
.
- Ваша
Folder
позволяет вам получить коллекцию (итеративную, используя For Each
) Files
в папке.
- Вы хотите использовать
Excel.Application
чтобы получить экземпляр объекта Workbook
для каждого имени файла, который вы хотите открыть, используя коллекцию Workbooks
(в частности, Application.Workbooks.Open
).
- Затем, используя ссылку на каждый конкретный объект
Workbook
, вы можете при необходимости выполнять обработку данных на уровне ячейки и Close
каждую книгу, когда закончите с ней.
- Для обработки на уровне ячеек вам необходимо перейти к
Worksheets
имеющейся у вас книги, используя, например, wb.Worksheets(1)
если у вас есть только один рабочий лист в рабочей книге, и это тот, который вы хотите прочитать (при условии, что ваш объект рабочей Workbook
назначен переменной wb
).
- Имейте в виду, что
Selection
является полиморфным с Range
; вместо того, чтобы выбирать каждую отдельную ячейку, которую вы хотите обработать, гораздо быстрее и проще работать с кодом, как, например, ws.Cells(1,2).Value
чтобы получить значение ячейки A2 на листе, на которое указывает ws
. Ценность в запоминании этого полиморфизма заключается в том, что вы можете заменить существующие записанные вызовы Selection
на вызовы ws.Cells
или аналогичные. Просто следите за "курсором" (например, ячейка, которая, как вы знаете, является началом ваших данных) и используйте метод Offset
чтобы получить ячейки относительно нее.
Удачи!
Научить человека ловить рыбу
Всякий раз, когда вы не уверены в семантике API какого-либо конкретного объекта, даже если вы не получаете меню автозавершения кода в редакторе VBA, вы все равно можете нажать F2, чтобы вызвать обозреватель объектов, который отобразит API всех объектов, которые вы используете. ссылались (который будет включать в себя весь Excel COM API).
Вы также можете написать в Google "msdn what excel", где whatever
вы ни искали, какой бы тип объекта или имени метода вы ни искали, и вы попадете прямо в список API на MSDN.
Убедитесь, что используете Set
для назначения типов объектов переменным! :)