В Excel есть способ импортировать данные из Access без VBA вообще.
Создайте соединение для заполнения вашей рабочей таблицы .
Перейдите в меню «Данные»> «Доступ».
Вам будет предложено выбрать базу данных Access и выбрать таблицу, которую вы хотите. Возможно, вы хотите, чтобы запрос был выполнен, но сейчас выберите любую таблицу; это будет отредактировано позже.
Измените запрос на то, что вы хотите .
Откройте окно подключения, щелкнув меню Data
> Connections
и выберите только что созданное подключение. Затем перейдите на следующую вкладку (Определение), измените Тип команды с Таблицы на SQL, затем в тексте команды введите свою команду.
Пока не закрывайте окно.
Добавить условие на вашу дату .
Если поле вызывается, например, MyDate, то добавьте предложение WHERE
, подобное следующему: (MyDate >= ? AND MyDate <= ?)
.
Когда вы обновите данные, вам будет предложено указать значения, заменяющие 2 знака вопроса, и у вас будет возможность назначить ячейку для этого. У вас также будет возможность для запроса всегда использовать то, что вы определили.
Обратите внимание, что если все сделано правильно, вы можете изменить порядок полей и / или создать формулы в таблице, не создавая никаких проблем для Excel. Вы также можете создать строку Итого внизу, чтобы суммировать значения, используя формулу (Excel покажет вам выпадающий список для создания формулы SUBTOTAL
, которая удобно чувствительна к фильтрам.
Если вы хотите обновить данные с помощью VBA, потребуется всего одна строка кода: ThisWorkbook.Connections(...).Refresh
или ApExcel.Workbooks(..).Connections(...).Refresh
.
PS: Если вы абсолютно хотите сохранить свой код выше, то, по крайней мере, убедитесь, что вы не копируете rs2 ячейка за ячейкой (что очень медленно из-за обработки событий в Excel), а скорее делаете что-то вроде: ApExcel.Cells(2, 1).CopyFromRecordset rs2