【问题标题】:What is "Compile error User-defined type not defined"?什么是“编译错误用户定义类型未定义”?
【发布时间】:2015-12-08 03:54:45
【问题描述】:

我正在尝试将工作表从 Excel 2007 导出到 Windows 7 上的 Access 2007,包括创建一个新表。我在 Excel 中尝试了以下 VBA,但它指出“编译错误用户定义的类型未定义”,然后突出显示 Access 对象的第一个变量声明。我引用了 Microsoft ActiveX 数据对象 6.1 库。

怎么了?

Dim acc As New Access.Application
Dim ws As Worksheet
Dim ThisWorkbook As Workbook
Dim a As Long
Dim b As Long

Set ThisWorkbook = ActiveWorkbook
Set ws = ThisWorkbook.Sheets("CompleteNoFormat3")
a = ws.UsedRange.Rows.Count
b = ws.UsedRange.Columns.Count

acc.OpenCurrentDatabase "CustDB.mdb"
  acc.DoCmd.TransferSpreadsheet _
   TransferType:=acImport, _
   SpreadSheetType:=acSpreadsheetTypeExcel12Xml, _
   TableName:="CustExportTable", _
   Filename:=Application.ActiveWorkbook.FullName, _
   HasFieldNames:=True, _
   Range:="BAPCompletNoFormat$A1:" & a & B 
acc.CloseCurrentDatabase
acc.Quit
Set acc = Nothing

【问题讨论】:

  • 您需要添加对 Access Application 对象库的引用。 ADO 和 Access 不是一回事。
  • @TimWilliams 感谢您的回复。回复晚了,因为我不得不休年假。这解决了问题,但现在它无法识别“CompleteNoFormat3”工作表,而是传输第一个工作表

标签: vba ms-access-2007 excel-2007


【解决方案1】:

考虑使用后期绑定,如果将应用程序分发给可能安装了不同库版本类型的多个用户,有时甚至建议使用后期绑定。

后期绑定避免了在 CPU 搜索适当类型和不support the "New" keyword 的应用程序时专门选择引用:

Dim acc As Object

Set acc = CreateObject("Access.Application")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多