powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вызов пользовательской функции Access из Excel
5 сообщений из 5, страница 1 из 1
Вызов пользовательской функции Access из Excel
    #39198860
dmitriy_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Много уже было написано об этом, но решения пока не нашел. Есть необходимость использования пользовательских функций, написанных в рабочей БД, в рабочих листах Excel. Получилось написать в Excel некую корявую функцию, которая хоть как-то работает.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 Function GetDateFromAccess(Arg As String) As Date
    Dim appAcc As Access.Application
    Dim strPath As String
    
    strPath = "C:\MyDatabase.accdb"
    
    Set appAcc = CreateObject("Access.Application")
    appAcc.OpenCurrentDatabase strPath
    GetDateFromAccess = appAcc.Run("GetDate", Arg)
End Function



"Корявость" состоит в том, что открывается сама база, и это совсем не вариант. Базу, конечно, можно скрыть и закрыть в самом коде, но мне этот вариант не нравится. База открывается достаточно долго около (5-10 секунд). т.к. при загрузке выполняются ряд процедур. Использование такой функции в Excel становится нецелесообразным.
Помогите, пожалуйста, решить задачу без открытия самой БД.

Заранее благодарю.
...
Рейтинг: 0 / 0
Вызов пользовательской функции Access из Excel
    #39198900
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавить базу в референсы не пробовали?
...
Рейтинг: 0 / 0
Вызов пользовательской функции Access из Excel
    #39198902
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База Акса емнип не добавляется в рефы проекта Экселя.
...
Рейтинг: 0 / 0
Вызов пользовательской функции Access из Excel
    #39198926
dmitriy_poПомогите, пожалуйста, решить задачу без открытия самой БД.
ИМХО, без поднятия Access.Application - никак.
Вы лучше объясните, какая сложность в этой функции, что ее нельзя повторить в модуле Ёкселя?
Или, наоборот, зачем эту операцию выполнять в Ё. Может логичнее в Аксе всё это выполнять? Получить дату, затем открыть ваш файл Ё и всунуть ее туда. Следом можно и функцию из модуля Ё.
...
Рейтинг: 0 / 0
Вызов пользовательской функции Access из Excel
    #39199383
dmitriy_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказалось проще и быстрее заново написать функцию в Excel, обращающуются в Access через DAO.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim db As DAO.Database
Sub SetDB()
    Set db = DBEngine.OpenDatabase("C:\MyDatabase.accdb")
End Sub

Function AccessFunction (Arg As String)
    Call SetDB
    On Error Resume Next
    AccessFunction = db.OpenRecordset([SQL запрос] & Arg).Fields(0)
    If Err <> 0 Then  AccessFunction = CVErr(xlErrNA)
    On Error GoTo 0
End Function
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вызов пользовательской функции Access из Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]