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

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

25.06.2014, 15:03. Показов 4393. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru