错误 – SQL编码为“应用程序定义或对象定义的错误”

我在VBA编码方面比较有经验,但是我在MS SQL Server 2008中是全新的。

我正在试图导出像下面的Excel表到SQL服务器:

ABCDE 1 Name Year ID 2 Jill 2015 17 3 Jack 2012 13 4 Mike 1999 25 5 

我的代码如下,首先创build并打开一个连接,然后从Excel表(Sheet2)创build一个表,然后将这个表复制到我的SQL服务器。

但是,我得到的代码行MyWorkBook.CurSheet.ListObjects.Add(xlSrcRange, Range("A1:B4"), , xlYes).Name = "Table1"错误,如“应用程序定义或对象定义的错误MyWorkBook.CurSheet.ListObjects.Add(xlSrcRange, Range("A1:B4"), , xlYes).Name = "Table1"我正在试图定义从Range("A1:B4")读取的Table1

有趣的是,我从几个不同的问题中find了相同的代码行,我认为它应该像现在这样工作。 有人有什么主意吗?

 Private Sub Transtable() Dim connOk As Boolean Dim MyWorkBook As Workbook Dim CurSheet As Worksheet Dim listObj As ListObject Dim rs As New ADODB.Recordset Dim dbclass As New ADODB.Connection Dim ServerName As String, DataBaseName As String, strSQL As String Set dbclass = New ADODB.Connection ServerName = "E43b0784" DataBaseName = "Tables" ' Specify the OLE DB provider. dbclass.Provider = "sqloledb" ' Set SQLOLEDB connection properties. dbclass.Properties("Data Source").Value = ServerName dbclass.Properties("Initial Catalog").Value = DataBaseName ' Windows NT authentication. dbclass.Properties("Integrated Security").Value = "SSPI" dbclass.Open Set MyWorkBook = ActiveWorkbook Set CurSheet = MyWorkBook.Sheets("Sheet2") 'Create Table in Excel VBA CurSheet.ListObjects.Add(xlSrcRange, Range("A1:B4"), , xlYes).Name = "Table1" Set listObj = CurSheet.ListObjects("Table1") 'Table Name 'get range of Table HeaderRange = listObj.HeaderRowRange.Address DataRange = listObj.DataBodyRange.Address dbclass.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" strSQL = "SELECT * FROM [" & CurSheet.Name & "$" & Replace(DataRange, "$", "") & "];" rs.Open strSQL, dbclass, adOpenStatic, adLockReadOnly arrData = rs.GetRows rs.Close dbclass.Close Set rs = Nothing Set dbclass = Nothing Set listObj = Nothing Set CurSheet = Nothing End Sub 

CurSheet不是CurSheet的成员。 CurSheet已经是一个完全合格的表单对象。 它不需要使用工作簿对象进行限定。

 Set MyWorkBook = ActiveWorkbook Set CurSheet = Sheet2 'Create Table in Excel VBA MyWorkBook.CurSheet.ListObjects... ' Error 

也许这就是你的意思:

 Set MyWorkBook = ActiveWorkbook Set CurSheet = MyWorkbook.Sheets("Sheet2") 'Create Table in Excel VBA CurSheet.ListObjects... ' Correct