所以我的代码是通过关闭数据库创建数据库的副本,使用新名称复制数据库,然后重新打开原始数据库:
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....
答案 0 :(得分:1)
经典不幸/错误,您将变量的名称appAccess
和Set 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