В начале своего выполнения процедура работает с объектом Recordset. Обратите внимание на метол Open (Открыть) этого объекта. Аргумент Source (Источник) метода Open задает имя таблицы в базе данных (в данном случае процедура будет работать с таблицей Товары). Аргумент activeconnection (активное соединение) содержит всю информацию, необходимую для соединения с базой данных:
После установления соединения с базой данных, все готово для импортирования ее, данных в рабочую книгу. Но здесь вас подстерегает небольшая проблема. Массив данных, извлекаемый из базы данных с помощью ADO, организован в виде двумерной таблицы, где каждый столбец соответствует одной записи данных, а строка соответствует полю, т.е. данные представлены совсем не в том виде, к какому мы привыкли.
Поэтому, прежде чем помешать данные в рабочий лист, весь массив данных надо транспонировать (повернуть) так, чтобы столбцы стали строками, а строки - столбцами. Если вы опытный пользователь Excel, то можете предположить, что для этого можно воспользоваться функцией Excel ТРАНСП (транспонирование). Но дело осложняется тем, что массивы импортируемых данных, как правило, очень велики и функция ТРАНСП с ними не всегда справляется. Поэтому надо создать собственную функцию транспонирования (код такой функции с названием Поворот приведен ниже в листинге 21.2). В процедуре ИмпортДанных в строках кода
сначала очищается текущая активная область рабочего листа, начиная с ячейки А1, а затем используется метод Intersect (Пересечь) В сочетании с функцией транспонирования Поворот. Метод Intersect возвращает объект Range (Диапазон), состоящий из прямоугольной области пересечения двух и более диапазонов ячеек. В данном случае создается пересечение диапазона импортируемых данных и ячеек всего рабочего листа.
Последний оператор rsProducts.Close закрывает соединение с базой данных.
Теперь приведем код функции транспонирования Поворот.