Vba “什么是”呢;编译错误用户定义类型未定义“;?

Vba “什么是”呢;编译错误用户定义类型未定义“;?,vba,ms-access-2007,excel-2007,Vba,Ms Access 2007,Excel 2007,我正在尝试从Excel 2007导出工作表以在Windows 7上访问2007,包括创建新表。我在Excel中尝试了以下VBA,但它表示“未定义编译错误用户定义类型”,然后突出显示Access对象的第一个变量声明。我引用了Microsoft ActiveX Data Objects 6.1库 怎么了 Dim acc As New Access.Application Dim ws As Worksheet Dim ThisWorkbook As Workbook Dim a As Long Di

我正在尝试从Excel 2007导出工作表以在Windows 7上访问2007,包括创建新表。我在Excel中尝试了以下VBA,但它表示“未定义编译错误用户定义类型”,然后突出显示Access对象的第一个变量声明。我引用了Microsoft ActiveX Data Objects 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

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

后期绑定避免了在CPU搜索适当类型和不满足以下条件的应用程序时需要特别选择引用:


您需要添加对Access应用程序对象库的引用。ADO和Access不是一回事。@TimWilliams感谢您的回复。因为我必须休年假,所以回复晚了。这解决了问题,但现在它不识别“CompleteFormat3”工作表,而是传输第一个工作表
Dim acc As Object

Set acc = CreateObject("Access.Application")