如何使用VBA创建空白MS Access数据库?

时间:2013-08-04 09:19:15

标签: sql excel vba ms-access

我是一个尝试使用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:应用程序定义或对象定义错误”

我该怎么办?

4 个答案:

答案 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

编辑:一旦帖子关闭,将删除此答案并将其作为评论发布。