2015-09-11 158 views
0

我正在尝试将工作表从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 
+0

您需要将引用添加到应用程序的访问对象库。 ADO和Access并不是一回事。 –

+0

@TimWilliams感谢您的回复。迟到的答复,因为我不得不休年假。这解决了这个问题,但现在它不识别“CompleteNoFormat3”工作表,而是转移第一个工作表 – mjhenry

回答

1

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

后期绑定避免了需要专门选择为适当的类型CPU搜索,对于做应用程序引用不support the "New" keyword

Dim acc As Object 

Set acc = CreateObject("Access.Application") 
相关问题