传输电子表格范围错误:3011卡在第"IV"列



我正在使用以下功能将列导出到访问db。它适用于" 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

edit ::错误消息:" MS访问无法找到对象'perm-1 $ iv3:iv4'。确保对象存在并正确拼写其名称。如果这不是本地对象,请检查您的网络连接或联系服务器管理"

第四列是第256列。访问2007-2010的限制为255列。TransFersPreadsheet共享这些列限制,但是(可能是事实证明的更多)也受到过时的Excel对象模型(256列和65536行)的限制。

这是一些围绕列问题工作的示例代码。(您可以以相同的方式围绕行限制工作 - 将其复制到第1至65536行,并在最多65535行的块中导入。您想转移的东西。对于此示例,我只转移一列。

可能有更好的解决方法,但出于当前目的,这是POC。是的,我正在使用" thisworkbook",并且转移使用" ActiveWorkBook"。

Sub test()
    Dim accDB As Access.Application
    Set accDB = New Access.Application
    accDB.Application.Visible = True
    accDB.OpenCurrentDatabase "C:BenchDatabase11.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

最新更新