【问题标题】:How can a blank MS Access database be created using VBA?如何使用 VBA 创建空白的 MS Access 数据库?
【发布时间】:2013-08-05 04:09:53
【问题描述】:

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

我能做什么?

【问题讨论】:

    标签: sql excel vba ms-access


    【解决方案1】:

    CreateDatabase方法中的locale常量名称错误:

    这个:
    accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera

    应该是:
    accessApp.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL

    更改它,您的代码应该可以工作。 (至少对我有用)。

    【讨论】:

    • ++ 是的,可以,但这不是错误消息的原因:) 请参阅我的答案。
    【解决方案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
    

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

    【讨论】:

      【解决方案3】:

      老问题,但对我很有用。好像你甚至不需要 Access 对象。

      Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL
      

      对我来说很好。

      【讨论】:

      • 我不反对这一行,但我强烈反对评论的哲学:没有错误捕获也更少代码,让屏幕更新更少代码等等。这很少见,在vba,其中更少的代码行可以转化为更强大的实现和更高的效率,但通常两者都没有。
      【解决方案4】:

      如果您打算使用您创建的自动化对象,您应该使用第一种方法。您可以打开表单、使用 DoCmd 语句等,只需在每个语句前加上“accessApp”即可。例如,我使用 TempVars 来保存用户数据。我可以使用自动化打开一个相关的数据库,然后做

      accessApp.TempVars.Add "CurrentUser", TempVars.CurrentUser

      将 CurrentUser 值从活动数据库传递到新数据库。

      当你只想创建一个新的数据库来做DoCmd.TransferDatabase这样的功能时,你可以使用

      Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL

      【讨论】:

      猜你喜欢
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多