【问题标题】:"Runtime error 91" when opening Access打开 Access 时出现“运行时错误 91”
【发布时间】:2015-11-12 14:39:30
【问题描述】:

所以我的代码是通过关闭数据库来创建数据库的副本,用新名称复制它,然后重新打开原始数据库:

 Global appAccess As Object
 Sub Auto_Open()

 Dim OtherDB As Object

 sOther = "E:\6thFormExamples\"

 sName = "ActualDB.accdb"

 sFullPath = sOther & sName
 Set OtherDB = GetObject(sFullPath)
 OtherDB.Application.Quit

 sNewName = Format(Date, "d-mmmm-yyyy")
 Dim fso As Object
 Set fso = VBA.CreateObject("Scripting.FileSystemObject")

 Call fso.CopyFile(sFullPath, sOther & "Backup" & sNewName & ".accdb", True)

 'Reopen DB

  Set accessApp = CreateObject("Access.Application")
  accessApp.Visible = True

  appAccess.OpenCurrentDatabase ("E:\6thFormExamples\ActualDB.accdb")
 'Application.Quit

 End Sub

现在我知道文件路径是正确的,因为它第一次发现它关闭它。我收到的错误是:

运行时错误 91,对象变量或未设置块变量。

但我无法确定在关闭和复制数据库期间使用的任何变量都可以正常工作。 运行 office 和 Excel 2010,如果有影响的话

在线出现错误

appAccess.OpenCurrentDatabase....

【问题讨论】:

    标签: excel ms-access vba


    【解决方案1】:

    经典的事故/错误,您颠倒了变量的名称 appAccessSet accessApp

    顺便说一句,如果您已经打开了一个 Access 实例,或者为了避免拥有多个实例,您应该使用:

        'Reopen DB
    On Error Resume Next
    Set appAccess = GetObject(, "Access.Application")
    If Err.Number <> 0 Then
        Set appAccess = CreateObject("Access.Application")
    End If
    On Error GoTo 0
    
    On Error Resume Next    
    
          appAccess.Visible = True
          appAccess.OpenCurrentDatabase ("E:\6thFormExamples\ActualDB.accdb")
         'Application.Quit
    

    【讨论】:

    • 您可以在代码顶部使用Option Explicit On 来显示编译器错误而不是运行时错误,因为您输入了错误的变量名。
    • 不敢相信我没有注意到我的变量名错误,谢谢,还有其他有类似问题的人,通过检查 Access 是否已经打开,答案代码运行得很好
    • @p-k-y :是的,不要担心这样的小错误,我曾经花了 2 天时间在我的代码中花费了很多时间,最终找到了完全相同的问题,2 个变量名称非常相似! ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多