как определить, закрыл ли пользователь приложение Access, которое было закрыто кодом из Excel - PullRequest
0 голосов
/ 27 сентября 2019

Я использую некоторые данные в Excel, которые хранятся в базе данных Access.Если пользователь хочет добавить / изменить данные, это необходимо сделать во внешнем интерфейсе Access (в моем случае).Чтобы обеспечить простой способ сделать это, я поместил кнопку «Изменить данные» на листе Excel, чтобы открыть базу данных + форму:

' standard module

Const mstrDatabase = ' path & filename
Const mstrForm =     ' name of form to edit data

Private moAccessApp As Access.Application
    ' module level object to keep database open after button_click-code finished

Sub OpenDatabase_Button_Click()
    Set moAccessApp = CreateObject("Access.Application")
    moAccessApp.OpenCurrentDatabase mstrDatabase
    moAccessApp.Visible = True
    moAccessApp.DoCmd.OpenForm mstrForm
End Sub

Если пользователь закрывает Access, объект moAccessApp по-прежнемуустановить (Debug.Print (moAccessApp Is Nothing) распечатывает False).

Вопросы:

  1. Как определить, был ли доступ закрыт пользователем?
  2. Можно ли запустить событие в Excelв таком случае?

ad (1): я хочу запретить открытие второго экземпляра в случае повторного нажатия кнопки

ad (2): я хочу обновить данныев Excel, по крайней мере, после закрытия базы данных (хотя я знаю, что пользователь может изменить данные в Access и снова переключиться в Excel, не закрывая Access).

1 Ответ

0 голосов
/ 27 сентября 2019

РЕДАКТИРОВАТЬ

Согласно документации Microsoft

Я думаю, что способ сделать то, что вы просили, это вызвать ваш макрос назакрыть ваш доступ:

Макрос доступа

Private Sub Form_Unload() 
 Call runExcelMacro("C:\YourWorkbookPath.xls", "MacroName")
End Sub

Макрос Excel

Sub MacroName()
  MsgBox "Access  Form Is closed"
  ThisWorkbook.RefreshAll
End Sub

Также обратите внимание, что в соответствии с этот ответ для Access нет события OnClose.

Дополнительная документация здесь

.RefreshAll

.IsLoaded

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...