Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] MS Access 2010-Выгрузка данных Excel

Ответить
Настройки темы
VBA - [решено] MS Access 2010-Выгрузка данных Excel

Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: AlexeyMakarov
Дата: 30-09-2014
Описание: БД не добавил
Изображения
Тип файла: png Снимок.PNG
(10.6 Kb, 29 просмотров)
Добрый день.
Пытаюсь разобраться с вопросом выгрузки данных в Excel при помощи VBA. Используя метод - Метод ADODB recordset.
Примеры брал тут:
-http://zmey.1977.ru/Access_To_Excel_Ru.htm#a1
-http://info-comp.ru/obucheniest/299--access-export-v-word-excel.html
В референсах подключено: Снимок.PNG
Плучаю ошибку: Variable not defined
Ругается на значении: Rowss
Нашел советы типа:
- Уберите в самом верху кода обязательную декларацию переменных
-Укажите переменную
Я использую образцы и они без указания переменных гамают, подскажите пожалуйста в чем я не догоняю.
Выкладываю на файлообменник пример БД:
читать дальше »
http://rghost.ru/58278886

*Листинг
читать дальше »
'Объявляем переменные
Dim XL As Object
Dim XLT As Object
Dim newrow As Object
Dim rsd As ADODB.Recordset
Dim ZMN As String

Set rsd = New ADODB.Recordset
'Запрос к базе данных
ZMN = "select * from tbl_1"
rsd.Open ZMN, CurrentProject.Connection
'Создаем необходимые объекты
Set XL = CreateObject("Excel.Application")
'для примера показываю, как можно сразу загружать шаблон без выбора
Set XLT = XL.Workbooks.Open("D:\ЗБК\Книга999.xlsx")
'2 способ если строк в источнике несколько
'причем мы учтем то, что у нас есть шапка и примечание в Excel
'и мы не знаем, сколько строк у нас вставиться
'и поэтому строки будем добавлять в случае необходимости
'зададим, с какой строки будем начинать вставлять данные
Rowss = 10
'для нумерации
numrow = 1
'запускаем цикл до тех пор, пока не закончатся строки в нашем источнике
While Not (rsd.EOF)
'смотрим, если строк больше чем мы задали в шаблоне
If Rowss >= 12 Then
'то добавляем строку
XLT.Worksheets("Лист1").Rows(Rowss).Insert
'Запомним нашу строку
Set newrow = XLT.Worksheets("Лист1").Rows(Rowss)
'и вставим туда копию предыдущей строки
'для того если вдруг у вас там есть объединенные ячейки или какие-то нужные данные
'так как новая строка создастся без всяких объединений и значений
XLT.Worksheets("Лист1").Rows(Rowss - 1).Copy newrow
'это просто для примера как можно очистить некий диапазон внутри документа
'XLT.Worksheets("Лист1").Range("A10:F10").ClearContents
'динамически формируем адрес нужной ячейки
с = "a" & Rowss
'и задаем ей значение
XLT.Worksheets("Лист1").Range(cell) = numrow
cell = "b" & Rowss
XLT.Worksheets("Лист1").Range(cell) = rsd.Fields("field5").Value
'переходим на следующую строку
Rowss = Rowss + 1
'переходим на следующую строку в источнике данных
rsd.MoveNext
Else
'а это выполняется до тех пор, пока не закончатся заданные строки в шаблоне
'т.е. если строк в источнике всего 1 то в код, который выше мы даже не попадем
cell = "a" & Rowss
XLT.Worksheets("Лист1").Range(cell) = numrow
cell = "b" & Rowss
XLT.Worksheets("Лист1").Range(cell) = rsd.Fields("field5").Value
Rowss = Rowss + 1
rsd.MoveNext
End If
'для нумерации
numrow = numrow + 1
'конец цикла
Wend

End Sub

*Примеры брал тут:
читать дальше »
-http://zmey.1977.ru/Access_To_Excel_Ru.htm#a1
-http://info-comp.ru/obucheniest/299--access-export-v-word-excel.html

Отправлено: 14:20, 30-09-2014

 

Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать



Давно разобрался с задачкой, чтобы закрыть тему выложу решение в архиве. Вот ряд требований, для решений:
1- Установите себе уже Notepad++, код в данном редакторе отображается намного лучше, там ещё синтаксис VBA есть, включил и все видно, качайте с офф. сайта, там и русская версия есть (кому надо).

2-Подключите нужные библиотеки, выше я писал какие (Снимок.PNG)

*-Чтобы вы не мучились с кодом, я прилагаю экспорт кода VBA со своей формы+саму базу данных+шаблонПример выгрузки из БД.rar

3-Либо вы импортируете в свою форму мой код и смотрите как работает, лучше правьте мой код, там по сути останется указать ссылку на шаблон, исправить с какой строки начинать вносить данные в шаблон, указать какие столбцы необходимо экспортировать в Эксель. Для облегчения задачи, я вставлял экспорт в столбцы не последовательно, в комментариях я тоже это отразил.

4 Следующим этапом я бы предложил оформить свой код в виде функции и вызывать его из формы. Пример приложен только когда исполняющий код находится в форме.

Последний раз редактировалось AlexeyMakarov, 20-02-2015 в 06:56.


Отправлено: 06:49, 20-02-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] MS Access 2010-Выгрузка данных Excel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - [решено] Импорт данных из MS Access navuhodonosor Программирование и базы данных 3 27-08-2013 20:50
2010 - MS access 2010 не показывает даты в БД Voron-orel Microsoft Office (Word, Excel, Outlook и т.д.) 2 09-12-2012 16:33
Разное - [решено] MS Access 2010 группа переключателей. AlexeyMakarov Microsoft Office (Word, Excel, Outlook и т.д.) 12 23-07-2012 05:20
2010 - MS Access 2010: Границы области печати отчета Ansell Microsoft Office (Word, Excel, Outlook и т.д.) 5 11-11-2011 14:15
MSFT SQL Server - импорт данных из Контур в ms access seman Программирование и базы данных 3 30-09-2009 09:38




 
Переход