Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 26

Адаптация макроса Excel для запуска из приложения Access

25.06.2014, 15:03. Показов 4451. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Имеем: запрос в MS Access, сохраняющий результат в Excel- файле, макрос окрашивания ячеек в VBA Excel. Как возможно прописать этот же макрос языком VBA Access?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2014, 15:03
Ответы с готовыми решениями:

Адаптация Макроса для OO
Добрый день! Помогите адаптировать макрос для OpenOffice. (или любого бесплатного аналога) Private Sub Worksheet_Change(ByVal Target...

Существует ли возможность создания макроса для ввода данных в Excel, такого же как в Access?
Существует ли возможность создания макроса для ввода данных в Excel, такого же как в Access?

Скорость работы макроса Access vs Excel
Друзья, добрый день. Проблема: скорость работы макроса в Access в 100 раз медленнее, чем такого же в Excel. Макрос всего-то парсит...

29
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
27.06.2014, 12:42
Студворк — интернет-сервис помощи студентам
Попробуйте
запуск в командной строке
regsvr32 C:\Progra~1\Common~1\Micros~1\DAO\dao350 .dll
regsvr32 C:\Progra~1\Common~1\Micros~1\DAO\dao360 .dll
0
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 26
27.06.2014, 13:04  [ТС]
Rube, не выходит. для этого админские права на машине нужны?у меня юзерские(
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
27.06.2014, 13:22
По идее нужны, тогда попробуйте создать книгу, получится?
Вставьте это сразу после 1-й строчки, остальное закоментируйте.
Visual Basic
1
2
Set appExcel = Excel.Application
appExcel.Visible = True
0
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 26
27.06.2014, 13:24  [ТС]
Rube, получается
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
27.06.2014, 13:53
Тогда пишем дальше:
Visual Basic
1
2
3
4
5
6
Dim wb As Workbook
Set wb = appExcel.Workbooks.Add
Set sh = wb.Worksheets("CheckBG")
With sh ' работаем с листом
   .Cells(1, 1).Value = "ОК" ' пишем в 1-ю ячейку
End With
Получилось?
0
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 26
27.06.2014, 14:22  [ТС]
Rube,
Visual Basic
1
2
3
4
5
6
7
8
 Set appExcel = Excel.Application
appExcel.Visible = True
            Dim wb As Workbook
Set wb = appExcel.Workbooks.Add
Set sh = wb.Worksheets("CheckBG")
With sh 
   .Cells(1, 1).Value = "ОК" 
End With
Создаёт стандартную книгу с тремя листами, и всё
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
27.06.2014, 14:53
А все равно без DAO не обойтись... Просите админов зарегистрировать библу.
Это вариант вставки запроса в новую книгу.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim appExcel As Excel.Application, sh As Worksheet, rng As Range
Dim rst As DAO.Recordset
Set appExcel = Excel.Application
appExcel.Visible = True
Dim wb As Workbook
Set wb = appExcel.Workbooks.Add
Set sh = wb.Worksheets(1)
With sh
   Set rng = .Range("A1:B5") ' диапазон вставки
End With
sq = CurrentDb.QueryDefs("CheckBG").sql ' присвоить текст запроса
Set rst = CurrentDb.OpenRecordset(sq) ' создать запрос
Call rng.CopyFromRecordset(rst)
1
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 26
02.07.2014, 10:23  [ТС]
Rube, сегодня адмы наконец-то соизволили заняться моемой проблемой. Часа полтора её "решали", пришли к выводу что библиотека подключена, но не под своим именем (как такое может быть-не пойму), так как при новом подключении выдался конфликт с текущим именем в проекте/библиотеке.
Опытным путём было выявлено, что ошибка выпадает из за несоответствия Экселевских переменных Аксесовским, попытаюсь что то найти в гугле; при удачном раскладе-опубликую результатСпасибо за помощь!

Добавлено через 17 часов 3 минуты
Rube, нашёл)у меня подключена библа ADO
0
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,673
02.07.2014, 10:52
у меня например так работать не хочет
Visual Basic
1
2
sq = CurrentDb.QueryDefs("CheckBG").sql ' присвоить текст запроса
Set rst = CurrentDb.OpenRecordset(sq)
ругается на то что свойству openrecordset надо задать имя запроса или таблицы
а вот так работать будет

Visual Basic
1
Set rst = CurrentDb.OpenRecordset("CheckBG")
библиотека dao - стандартная библиотека офиса и ставится по умолчанию
более того применяется позднее связывание с явным прописанием библиотеки так что подключение ее не обязательно
а вот екселевскую библиотеку надо подключать обязательно (если пользуетесь Екселевскими переменными)
или не обязательно если Екселевские константы заменены на их числовые аналоги (обычно константы начинаются с букв xl)

если хотите то можно ведь рекордсет ado использовать

Visual Basic
1
2
3
       Dim rs As New ADODB.Recordset, strSQL As String
             strSQL = CurrentDb.QueryDefs("CheckBG").sql                 
             rs.Open strSQL, CurrentProject.Connection,3,3
0
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 26
02.07.2014, 16:19  [ТС]
Получилось!!

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim appExcel As Excel.Application, sh As Worksheet, rng As Range, mypath As String
    mypath = CurrentProject.Path & "\Ïðîâåðêà.xls" ' ïóòü ê ôàéëó â ïàïêå ðîäèòåëÿ
    mysheet = "CheckBG" ' èìÿ ëèñòà
    DoCmd.OutputTo acOutputQuery, mysheet, "Excel 97 - Excel 2003 Workbook (*.xls)", mypath, 1 ' çàïèñü ðåçóëüòàòà çàïðîñà â ôàéë Excel
    Set appExcel = GetObject(, "Excel.Application") ' ïðèñâîèòü îáúåêò Excel
    Set sh = appExcel.Sheets(mysheet) ' ïðèñâîèòü ññûëêó íà ëèñò
    sh.Visible = True ' cäåëàòü âèäèìûì
    appExcel.WindowState = xlMinimized ' скрыть в трей
    n = sh.Rows.Count ' ïîäñ÷¸ò ñòðîê
    With sh ' ðàáîòàåì ñ ëèñòîì
        'Count = Worksheets(mysheet).Cells(Rows.Count, 1).End(xlUp).Row 'ïîäñ÷¸ò ñòðîê â ôàéëå Excel VBA
        For i = 2 To n
          If .Cells(i, 1).Value <> 0 And .Cells(i, 11).Value <> .Cells(i, 12).Value Then ' ñðàâíè çíà÷åíèÿ
             Set rng = .Range(.Cells(i, 1), .Cells(i, 20))  ' ïðèñâîèòü ññûëêó íà äèàïàçîí
             With rng.Interior ' ðàáîòàåì ñ ìåòîäîì Interior äèàïàçîíà
                .ColorIndex = 46
                .Pattern = xlSolid
             End With
             End If
             Next i
     End With
     MsgBox "Ãîòîâî"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.07.2014, 16:19

Исправление макроса заполнения БД Access из таблиц Excel
Добрый день! Я не программист, а экономист. Один добрый человек написал нам макрос, который загружает данные из подготовленных идентичных...

Создание условия для запуска макроса
Доброго времени суток! Прошу помочь решить такую вот задачку. В таблице Экзеля ячейка А1 один содержит в себе изменяющиеся значения,...

Не хватает библиотеки для запуска макроса
Ошибка при попытке запустить макрос. Не хватает библиотеки. Какой?Помогите пожалуйста разобраться. Лист 2

Run-time error 1004. Запуск макроса excel в vba access
Добрый вечер! Прошу помочь разобраться в проблеме. Запускаю макрос test_union в базе данных (forum-bd11.accdb), который обращается к...

Запуска макроса для выделения при открытии документа
Доброго времени суток. Подскажите с таким вопросом. Есть код для выделения координат выделенной ячейки. Он запускается при нажатии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru