powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
7 сообщений из 7, страница 1 из 1
Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
    #39425805
Фотография Фесенко Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. У меня есть процедура, в которой я вызываю макрос:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub RunMyMacro()
    On Error Resume Next
    DoCmd.RunMacro "mcsPrepare"
GeneralErrorHandler:
    If Err.Number <> 0 Then
        MsgBox "sd"
    End If
End Sub


Макрос иногда может возвращаться с ошибкой. У меня проблема в том, что я не могу перехватить средствами On Error GoTo.
Вопрос: это невозможно сделать или я делаю что-то не так?
...
Рейтинг: 0 / 0
Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
    #39425871
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фесенко Олег,
стесняюсь спросить: в какой момент и при каком действии возникает событие RunMyMacro()?
...
Рейтинг: 0 / 0
Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
    #39425894
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще не пойму зачем смешивать VBA и макросы(которые не имеют средств отладки).Какие действия выполняются макросом? Не проще-ли обработать соответствующее событие и даже не вспоминать о макросе (на форуме их,макросы,очень "любят")
...
Рейтинг: 0 / 0
Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
    #39425914
Фотография Фесенко Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, второй ваш вопрос (недоумение) мне нравится больше! Ибо оно имеет все основания!
Вообще моя задача - выполнить макрос, написанный технологом в Access:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        protected virtual void CallAccessMacro(string mdbPath, string macroName)
        {
            Access.Application oAccess = new Access.Application
            {
                Visible = true
            };
            oAccess.OpenCurrentDatabase(mdbPath);
            oAccess.DoCmd.RunMacro((macroName as Object), (1 as Object), (true as Object));
            oAccess.DoCmd.Quit(Access.AcQuitOption.acQuitSaveNone);
            Marshal.ReleaseComObject(oAccess);
            oAccess = null;
        }



Проблема, [...в том что...] что если макрос возвращает ошибку (у меня это: таблица "MyTbl" уже есть в базе данных), то Access остаётся открытым с предложением что-то поправить.
Я придумал решение обернуть этот макрос в процедуру:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub RunMyMacro()
    On Error Resume Go To GeneralErrorHandler:
    DoCmd.RunMacro "mcsPrepare"
GeneralErrorHandler:
    If Err.Number <> 0 Then
        MsgBox "sd"
    End If
End Sub


Причина: - не смог перехватить сообщение макроса в Access в среде .Net. решил попробовать сделать это в VBA
...
Рейтинг: 0 / 0
Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
    #39425936
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коль уж вы залезли внутрь акса, то может макрос преобразовать в vba? (мастером) ... если мне не изменяет память, то ошибку в макросе не побороть
...
Рейтинг: 0 / 0
Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
    #39425944
Фотография Фесенко Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubucha, здравствуйте! рад видеть! вы по прежнему (спустя 6 лет) отвечаете на мой вопрос.
авторошибку в макросе не побороть
Очень хорошо, что я теперь это знаю! попробую склонить технолога на экспорт макроса в VBA.
Спасибо, за помощь. обоим.
...
Рейтинг: 0 / 0
Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
    #39426244
Фотография Фесенко Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро!
Как узнать, что в процедуре вызывается макрос? Через поиск по тексту "RunMacro"? или есть ещё варианты?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Модуль VBA. Перехват ошибки, происходящей в вызываемом макросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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