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