【问题标题】:Exportation of Access file table to Excel spreadsheet with VBA使用 VBA 将 Access 文件表导出到 Excel 电子表格
【发布时间】:2014-01-09 18:29:16
【问题描述】:

我正在尝试使用以下代码在使用 VBA 的活动工作表中导入数据,并将 Access 文件作为源。

要导入的 Access 表名为“Table01”,定义查询时出现错误消息 (Set daoQueryDef = daoDB.QueryDefs(Text)):“item not found in this collection”。

你知道问题出在哪里吗?在合成器中?

Sub Import()

Dim daoDB As DAO.Database
Dim daoQueryDef As DAO.QueryDef
Dim daoRcd As DAO.Recordset

Set daoDB = OpenDatabase("C:\Users\Desktop\Database\Database.mdb")>
Text = "SELECT * FROM `Table01`"
Set daoQueryDef = daoDB.QueryDefs(Text)

Set daoRcd = daoQueryDef.OpenRecordset
ThisWorkbook.Worksheets("Import").Range("A4").CopyFromRecordset daoRcd

End Sub

【问题讨论】:

    标签: excel vba dao


    【解决方案1】:

    问题在于Set daoQueryDef = daoDB.QueryDefs(Text) 行。没有名称等于Text 的值的QueryDef。你需要使用CreateQueryDef来定义它。

    Set daoQueryDef = daoDB.CreateQueryDef("TempQueryDef", Text) 
    Set daoRcd = daoQueryDef.OpenRecordset
    ThisWorkbook.Worksheets("Import").Range("A4").CopyFromRecordset daoRcd
    daoDB.QueryDefs.Delete dao.QueryDef.Name
    

    此方法创建一个新的QueryDef,并以Text 作为其SQL 字符串并将其作为记录集打开,进行复制,然后在最后将其从QueryDefs 集合中删除。

    有关更多示例,请参见 Microsoft 的网站,例如http://msdn.microsoft.com/en-us/library/office/ff194892.aspx

    编辑(更好):使用临时 QueryDef 而无需在之后删除它(感谢 Remou)

    Set daoQueryDef = daoDB.CreateQueryDef("", Text) 
    Set daoRcd = daoQueryDef.OpenRecordset
    ThisWorkbook.Worksheets("Import").Range("A4").CopyFromRecordset daoRcd
    

    【讨论】:

    • 如果您使用空字符串作为 querydef 名称,您仍然可以使用 querydef,但不会保存。
    【解决方案2】:

    它正在工作,这是工作代码:

    Sub Import()
    
    Dim daoDB As DAO.Database
    Dim daoQueryDef As DAO.QueryDef
    Dim daoRcd As DAO.Recordset
    
    Set daoDB = OpenDatabase("C:\Users\Desktop\Database\Database.mdb")>
    Text = "SELECT * FROM `Table01`"
    
    Set daoQueryDef = daoDB.CreateQueryDef("", Text)    
    Set daoRcd = daoQueryDef.OpenRecordset
    ThisWorkbook.Worksheets("Import").Range("A4").CopyFromRecordset daoRcd
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 2017-11-09
      • 2013-04-16
      • 2014-10-27
      相关资源
      最近更新 更多