我是一个尝试使用Excel中的VBA创建空白MS Access数据库的总菜鸟。我想将新数据库命名为“tblImport”。这是我使用的代码:
Sub makedb()
Dim accessApp As Access.Application
Set accessApp = New Access.Application
accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera
accessApp.Quit
Set accessApp = Nothing
End Sub
我收到以下错误消息:
“运行时错误3001:应用程序定义或对象定义错误”
我该怎么办?
答案 0 :(得分:9)
CreateDatabase方法中的语言环境常量名称错误:
这个:
accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera
应该是:
accessApp.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL
更改它,您的代码应该有效。 (它至少对我有用)。
答案 1 :(得分:2)
老问题,但它对我有用。好像你甚至不需要Access对象。
Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL
对我来说很好。
答案 2 :(得分:2)
如果您打算使用自己创建的自动化对象,则应使用第一种方法。您可以通过使用“accessApp”为每个语句添加前缀来打开表单,使用DoCmd语句等。例如,我使用TempVars来保存用户数据。我可以使用自动化打开相关数据库,然后执行
accessApp.TempVars.Add "CurrentUser", TempVars.CurrentUser
将CurrentUser值从活动数据库传递到新数据库。
当你想要做的就是创建一个新数据库来执行DoCmd.TransferDatabase
等功能时,你可以使用
Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL
答案 3 :(得分:2)
旧问题。这是我的两分钱。你有一个错字......
dbLangGenera
应为dbLangGeneral
有关Workspace.CreateDatabase Method (DAO)
的更多信息根据Dealing with questions with obvious replies
投票结束此问题试试这个。这很有效。
Sub makedb()
Dim accessApp As Access.Application
Set accessApp = New Access.Application
accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGeneral
accessApp.Quit
Set accessApp = Nothing
End Sub
编辑:一旦帖子关闭,将删除此答案并将其作为评论发布。