Как мне предотвратить.Запуск в Outlook от открытия экземпляра Access дважды?

#vba #ms-access #outlook

#vba #ms-access #outlook

Вопрос:

В MS Outlook у меня есть кнопка, которая вызывает макрос в MS Access. Этот макрос открывает форму и задает текст. Каждый раз, когда я нажимаю эту кнопку, открывается новый экземпляр Access. Как мне предотвратить открытие нескольких экземпляров Access?

Код Outlook:

 'general declarations:
Public appAccess As Object


Sub OpenRecord()
    Dim Reference As String
    Dim docAccess

    Reference = 'teststring'

    Set appAccess = CreateObject("Access.Application")
    docAccess = appAccess.opencurrentdatabase("D:DatabaseMSA_db.accdb")
    appAccess.Visible = True
    appAccess.Run "OpenInternalReference", Reference
End Sub
  

Код доступа:

 Public Sub OpenInternalReference(MailReference As String)
    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "browse"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

    Forms("Browse").prefilter.SetFocus
    Forms("Browse").prefilter.Text = MailReference
End Sub
  

Ответ №1:

Ваша проблема не в .Run методе, а в вашем Set appAccess = CreateObject("Access.Application") , поскольку он всегда создает новый экземпляр access.

Этот код пытается получить приложение Access, которое уже открыто, и создает новое, если оно не найдено:

 Dim appAccess As Object

On Error Resume Next
Set appAccess = GetObject(Class:="Access.Application")
On Error GoTo 0

If appAccess Is Nothing Then
    Set appAccess = CreateObject("Access.Application")
End If
  

Комментарии:

1. Единственное, что мне нужно было добавить On Error Resume Next opencurrentdatabase , это команда выше.

2. @Jellema Если вы добавили при возобновлении работы с ошибкой, вам также пришлось добавить ошибку Goto 0. В противном случае нам придется списать ошибку на рецензирование.

3. @niton: хорошо, я буду использовать это