如何解决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 举报,一经查实,本站将立刻删除。