Мы не пишем ваш код для вас и не думаем о вас здесь, в 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 для назначения типов объектов переменным! :)