打开Access

时间:2015-11-12 14:39:30

标签: excel vba excel-vba ms-access access-vba

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

 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,对象变量或未设置块变量。

但在关闭和复制数据库期间,我无法确定哪个变量与任何使用过的工作正常。 运行办公室和Excel 2010,如果它有所作为

错误出现在

行上
appAccess.OpenCurrentDatabase....

1 个答案:

答案 0 :(得分: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