传输表格范围错误:3011卡在列“IV”

我正在使用下面的函数来导出列以访问数据库。 它适用于“IV”之前的所有列,但在列“IV”之后的所有范围都会出现错误。 我的表名是“Perm-1”,范例是IV3:IV4,如下例所示。 在Google或Microsoft文档中找不到任何内容。 任何人都面临类似的错误,请让我知道,如果你能解决它。

Public Sub Excel_Access_Export(accDB As Access.Application, tblName As String) accDB.DoCmd.TransferSpreadsheet _ TransferType:=acImport, _ SpreadSheetType:=acSpreadsheetTypeExcel12, _ TableName:=tblName, _ Filename:=Application.ActiveWorkbook.FullName, _ HasFieldNames:=True, _ Range:="Perm-1$IV3:IV4" End Sub 

编辑::错误信息:“MS Access无法find对象'Perm-1 $ IV3:IV4'。请确保对象存在并拼写正确。如果这不是本地对象,请检查您的networking连接或联系人服务器pipe理“

列IV是列256.访问2007-2010有255列的限制。 Transferspreadsheet共享这些列的限制,但是(也许更重要的是,因为它certificate了)也受限于一个过时的Excel对象模型(256列和65536行)。

以下是一些针对列问题的示例代码。 (你可以用同样的方法解决行限制 – 把它复制到第1行到第65536行,最多可以导入65535行。)我添加了一个新的表格“Staging”,它只是一张空白表单,你想转移的东西。 对于这个例子,我只转移一列。

有可能有更好的解决方法,但目前的目的,这是一个POC。 是的,我正在使用“本书”,转移是使用“activeworkbook”。

 Sub test() Dim accDB As Access.Application Set accDB = New Access.Application accDB.Application.Visible = True accDB.OpenCurrentDatabase "C:\Bench\Database11.accdb", True Call Excel_Access_Export(accDB, "Table1", 257) End Sub Public Sub Excel_Access_Export(accDB As Access.Application, tblName As String, col As Long) With ThisWorkbook.Sheets("Staging").Columns(1) .ClearContents .Value = thisWorkbook.Sheets("Perm-1").Columns(col).Value End With accDB.DoCmd.TransferSpreadsheet _ TransferType:=acImport, SpreadSheetType:=acSpreadsheetTypeExcel12, _ TableName:=tblName, Filename:=Application.ActiveWorkbook.FullName, _ HasFieldNames:=True, Range:="Staging$A3:A4" End Sub