Вопрос № 98510: Здравствуйте! Подскажите пожалуйста!
1.Можно ли через код VBA скопировать информацию из таблицы ACCESS в EXCEL?
2. Как подсветить строку, в которой находится активная ячейка (в EXCEL) каким-нибудь цветом?
Спасибо заранее!...
Вопрос № 98.510
Здравствуйте! Подскажите пожалуйста!
1.Можно ли через код VBA скопировать информацию из таблицы ACCESS в EXCEL?
2. Как подсветить строку, в которой находится активная ячейка (в EXCEL) каким-нибудь цветом?
Спасибо заранее!
Отправлен: 15.08.2007, 15:33
Вопрос задала: Maychik (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Карабанов Алексей
Здравствуйте, Maychik!
По первому вопросу.
Да, конечно можно. В приложении представляю вашему вниманию пример рабочего приложения для обмена данными между Access и Exel.
Пример вычисляет накопления по вкладам в банке с помощью функции БС
Для проверки примера сделайте следующее.
1.Создайте в корневом каталоге диска C: папку tmp
2.Создайте в папке tmp новую базу данных Access
3.В базе данных создайте таблицу Вклады, состоящую из полей:
Вкладчик - текстовое
Сумма - числовое
Ставка - числовое
Срок - числовое
4. Введите в таблицу несколько записей
5. Создайте в папке tmp книгу Exel Report.xls
6. Выполните команду Сервис->Макрос->Редактор Visual Basic
7. Нажмите клавишу F7 (откроется окно кода) и скопируйте в окно код, данный в приложении.
8. Закройте редактор Visual Basic
9. Выполните команду Сервис->Макрос->Макросы
10.Выделите в списке Ваш макрос и нажмите кнопку Выполнить.
Ячейки листа заполнятся данными.
В коде даны комментарии, тем не менее коротко поясню его работу.
Для обмена данными между приложениями создаются объектные переменные, им присваиваются ссылки на объекты (объектом может быть приложение, база данных, таблица, лист и т.д.)
Далее используя эти переменные можно задавать значения ячеек, изменять свойства, считывать данные из таблиц базы и т.п.
Для работы с таблицами базы данных Access используется объект RecordSet, который представляет собой набор данных из таблицы (что-то вроде виртуальной копии таблицы)
Такой набор данных можно обрабатывать, изменять данные, а затем измененные данные поместить в таблицу.
В нашем примере набор данных обрабатывается построчно, значение каждого поля записывается в ячейку листа Exel следующим образом:
Cells(строка,столбец).Value=Значение
По окончании использования приложение открытое из кода нужно закрыть, а объектную переменную уничтожить, присвоив ей значение Nothing
Обработка ошибок.
В случае возникновения ошибки в приложение передается ее код
Этот код анализируется в блоке обработки ошибок, и выполняются соответствующие инструкции.
В примере обработана ошибка с кодом 429, означающая, что не создан объект Access. Тогда он создается и управление возвращается в то место, где возникла ошибка. В случае возникновения ошибки с другим кодом, выдается сообщение, содержащее код ошибки и ее описание.
По второму вопросу. Для выделения цветом активной ячейки используйте свойство ActiveCell объекта Application, возвращающее ссылку на активную ячейку.
ActiveCell в свою очередь имеет свойство Font, который в свою очередь имеет свойство Color, задающее цвет текста в активной ячейке.
Таким образом получаем: ActiveCell.Font.Color=vbGreen - задает зеленый цвет текста
Для изменения цвета фона аналогично используется свойство Interior:
ActiveCell.Interior.Color=vbRed - красный цвет фона.
В примере есть процедура DemoActives задающая для активной ячейки зеленый цвет шрифта.
Вызов этой процедуры помещен в обработчик события SelectionChange объекта Worksheet и цвет в ячейке меняется при щелчке мыши.
Для нормальной работы примера нужно в Exel зайти в Сервис->Параметры, на вкладке Безопасность нажать кнопку Безопасность Макросов и в открывшемся диалоге выбрать Низкая.
В противном случае макросы выполняться не будут.
Желаю удачи!
Приложение:
--------- Дорогу осилит идущий!
Ответ отправил: Карабанов Алексей (статус: 7-ой класс)
Ответ отправлен: 15.08.2007, 19:46 Оценка за ответ: 5