微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MS Access 运行时 3011 错误 - 变量范围

如何解决MS Access 运行时 3011 错误 - 变量范围

非常感谢您对此的任何帮助。

我正在尝试使用电子表格填充 Access 中的表格,并指定要读取的文件、工作表和范围。不幸的是,excel 中的范围没有前缀。

运行时错误 3011:Microsoft Access 数据库引擎找不到对象“SheetName$A:Z10”。确保该对象存在并且您正确拼写了它的名称和路径名。如果“SheetName$A:Z10”不是本地对象,请检查您的网络连接或联系服务器管理员

DoCmd.TransferSpreadsheet acImport,10,"TableName",URL & "\" & fileimport,True,"SheetName!" & "A1:Z" & N - 1

其中 N 是行数。如您所见,指定选项卡和范围的字符串调试正常为 SheetName!A1:Z10(例如 N=11),但在错误消息中,Access 已替换“!”用“$”,整个事情就出错了。

任何想法为什么会发生这种情况,以及如何解决它?

完整程序如下。

Private Sub rapportoExcel_succ(sinGoloExcel As Integer)

Dim nomefile,Szsql,URL,Tabella,foglio1,foglio2 As String
Dim N,M As Integer
Dim Workbook1 As Object
Dim ImportList As Boolean
Set wks1 = DBEngine.Workspaces(0)
Set db = wks1.Databases(0)
Set Workbook1 = CreateObject("Excel.Application")

If IsNull(URL_name) Then
    URL = CurrentProject.Path
    Else
    URL = URL_name
End If

If IsNull(Date1) Then
    Else
    dstep = Date1
End If

qa = MsgBox("Are you sure?",vbYesNo)
If qa <> 6 Then Exit Sub

If Me!ImportList = -1 Or Me.Recordset.EOF Then Me.Recordset.MoveFirst

Do
     
Me.Repaint

If Me!ImportList = -1 Then
     fileimport = Me!nomefile & ".xlsx"
     Else
     fileimport = NomeDoc1 & ".xlsx"
End If
     
Workbook1.Workbooks.Open URL & "\" & fileimport,False
Workbook1.Visible = True
Workbook1.displayAlerts = False

With Workbook1.ActiveWorkbook
    .Unprotect ("a")
    foglio1 = .Sheets(3).Name
    .Sheets(3).Select
    .Unprotect ("a")
    .Sheets.Add
    .Sheets(3).Move before:=Sheets(1)
    .Sheets(1).Name = "SheetName"
    
    .Sheets("FullTable").Select
    .Sheets("FullTable").Range("C2").Select
    
End With

Workbook1.ActiveWorkbook.Sheets("FullTable").Range("C2").FormulaR1C1 = "=COUNTA(R[1]C:R[10000]C)"

N = Workbook1.ActiveWorkbook.Sheets("FullTable").Range("C2").Value + 2

If IsNull(dstep) Then Else dstep = Workbook1.ActiveWorkbook.Sheets("FullTable").Range("B1").Value

Workbook1.ActiveWorkbook.Sheets("FullTable").Range("X3:X" & N).Value = dstep 

Workbook1.ActiveWorkbook.Sheets("FullTable").Range("A3:X" & N).copy

Workbook1.ActiveWorkbook.Sheets("SheetName").Range("A2").PasteSpecial Paste:=xlPasteValues,Operation:=xlNone,SkipBlanks:=False,Transpose:=False

Workbook1.CutcopyMode = False

Workbook1.ActiveWorkbook.Sheets("SheetName").Columns("I").Delete Shift:=xlToLeft

Workbook1.ActiveWorkbook.Sheets("SheetName").Columns("J").Delete Shift:=xlToLeft

Workbook1.ActiveWorkbook.Sheets("SheetName").Columns("K").Delete Shift:=xlToLeft

Workbook1.ActiveWorkbook.Sheets("SheetName").Range("A1").FormulaR1C1 = "F1"

Workbook1.ActiveWorkbook.Sheets("SheetName").Range("B1").FormulaR1C1 = "F2"

With Workbook1.ActiveWorkbook
    .Sheets("SheetName").Select
    .Sheets("SheetName").Range("A1:B1").AutoFill Destination:=.Sheets("SheetName").Range("A1:Z1"),Type:=xlFillDefault
    
End With

DoCmd.TransferSpreadsheet acImport,"SheetName!" & "A1:Z" & N - 1

ActiveWorkbook.Close SaveChanges:=False
If Me!ImportList = -1 Then Me.Recordset.MoveNext
Loop Until Me.Recordset.EOF Or Me!ImportList = 0

MsgBox "Import complete" & IIf(Me.ImportList = 0,"1 group",Me.Recordset.RecordCount & " groups")

Workbook1.Quit

End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。