2016-10-11 44 views
0

在MS Outlook中,我有一个调用MS Access宏的按钮。该宏打开表单并设置文本。每次如果我按下该按钮,Access的新实例正在打开。如何防止打开多个Access实例?如何防止Outlook中的.Run打开两次Access实例?

展望代码:

'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:\Database\MSA_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 

回答

2

你的问题不是.Run方法,它是你的Set appAccess = CreateObject("Access.Application"),因为它始终会进入一个新的实例。

此代码试图获得一个已经打开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 
+0

我不得不添加唯一的办法就是一个'上的错误恢复Next'上面的'opencurrentdatabase'命令。 – Jellema

+0

@Jellema如果你添加了On Error Resume Next,那么你还必须添加On Error Goto 0.否则我们必须在Peer Review中收取一个错误。 – niton

+0

@niton:好的,我会用它 – Jellema