![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.02.2010
Сообщений: 326
|
![]()
Здравствуйте Уважаемые программисты!
Подскажите пожалуйста по Excel 2003, у меня в модуле "эта книга" следующий ниже код выполняет запрос к базе в Access и загружает данные из Таблицы1 на Лист1 в Excel: Private Sub Workbook_Open() Application.ScreenUpdating = False Dim dbs As DAO.Database Dim rs1 As DAO.Recordset On Error Resume Next Dim Filename As Variant Dim strFileName As String Filename = "БазаДанных.mdb" strFileName = Sheets("База").TextBox1 If Dir(strFileName & Filename) <> "" Then Set dbs = DAO.OpenDatabase(strFileName & Filename, True, True, ";pwd=база") End If Set rs1 = dbs.OpenRecordset("SELECT * FROM ТАБЛИЦА1") Dim i As Variant Sheets("Лист1").Columns("A:A").Clea rContents i = 1 Do While Not rs1.EOF Sheets("Лист1").Cells(i, 1).Value = rs1.Fields("Номер") i = i + 1 rs1.MoveNext Loop rs1.Close Set rs1 = Nothing dbs.Close Set dbs = Nothing Application.ScreenUpdating = True End Sub Вопрос в следующем: как можно другим макросом, например, это будет щелчок по кнопке на форме, сделать чтобы в данный код в модуле "эта книга" добавлялось: Dim rs2 As DAO.Recordset Set rs2 = dbs.OpenRecordset("SELECT * FROM ТАБЛИЦА2") Dim i As Variant Sheets("Лист2").Columns("A:A").Clea rContents i = 1 Do While Not rs2.EOF Sheets("Лист1").Cells(i, 1).Value = rs2.Fields("Номер") i = i + 1 rs2.MoveNext Loop rs2.Close Set rs2 = Nothing т.е. чтобы таким образом можно было прописать загрузку второй таблицы из базы Access? Заранее спасибо. |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 14.02.2009
Сообщений: 753
|
![]() Цитата:
В принципе есть возможность записать программно макрос. Только в твоём случае нужно же будет сначала найти место куда вписывать строки. Такого я не делал. |
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
![]()
Пробуйте. Вписываете в ячейку А2 текст для вставки и выбираете файлы, в которые необходимо вставить.
Только учитывайте, что для работы с VBA проектом необходимо в параметрах безопасности Excel проставить доверие к VBA проекту.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 22.02.2010
Сообщений: 326
|
![]() Цитата:
Я обязательно попробую это сделать. Прошу прощения за ошибку в моем коде: Dim rs2 As DAO.Recordset Set rs2 = dbs.OpenRecordset("SELECT * FROM ТАБЛИЦА2") Dim i As Variant Sheets("Лист2").Columns("A:A").Clea rContents i = 1 Do While Not rs2.EOF Sheets("Лист2").Cells(i, 1).Value = rs2.Fields("Номер") i = i + 1 rs2.MoveNext Loop rs2.Close Set rs2 = Nothing Хотелось бы подробнее пояснить мою задачу: данный код добавляет на другой лист (Лист2) данные из другой (второй) таблицы Access. Другими словами, каждая таблица Access загружает свои данные (поля) на отдельный лист Excel. И мне хотелось бы чтобы при добавлении в Access новой таблицы, можно было макросом (не заходя и не добавляя вручную) дописать в модуле "Эта Книга" код, чтобы далее при открытии книги Excel данные новой таблицы добавились на новый лист (новый лист Excel при этом будет создаваться другим макросом). |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
![]()
Если я правильно понял вашу задумку
Где Range("MyTable") поименованый динамичный диапазон например на первом листе Лист2 Таблица2 Лист3 Таблица3 Лист4 Таблица7 Лист5 Таблица4 Лист6 Таблица5 Код:
Анализ,обработка данных Недорого
|
![]() |
![]() |
![]() |
#6 | ||
Форумчанин
Регистрация: 14.02.2009
Сообщений: 753
|
![]() Цитата:
Во вторых: кто его должен запускать? В третьих: Макрос дозаписывания макроса будет как миниум в два раза больше по объёму дозаписываемых строк В четвёртых: сама процедура определения места дописывания довольно сложна. Вывод: нодо менять подход! Цитата:
Алгоритм такой: по всем таблицам, по всем строкам, по всем полям |
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Добавить макросом Module и Function | agregator | Microsoft Office Excel | 12 | 07.02.2011 17:52 |
открытие нескольких книг одним макросом и закрытие книг другим макросом | kursant95 | Microsoft Office Excel | 6 | 27.01.2011 16:54 |
Добавить код макросом. | agregator | Microsoft Office Excel | 4 | 02.12.2009 10:43 |
Копирование данных из одной рабочей книги в другую макросом. | Andrey3055 | Microsoft Office Excel | 2 | 30.10.2009 22:00 |
Защита листа вновь созданой макросом книги. | КаМММ | Microsoft Office Excel | 1 | 27.04.2009 06:14 |