vba - 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, 10, "TableName", URL & "\" & fileimport, True, "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
解决方案
代码的问题是变量和对象没有很好地定义,从名为 WorkBook1 的 Excel App 开始,而不是 ExcelApp。这会带来混乱。重写代码并避免“Active__”对象全部修复。
推荐阅读
- c# - 矩形不改变颜色WPF
- java - Springboot 2 不向 Spring Data Rest(MVC 部分)添加任何自定义转换器
- javascript - 使用 Vue 方法时,我无法在访问数据时使用“this”
- .net-core - 使用 CLI 更新 .net core nuget 包
- ios - Safari 中的 PWA 与外部登录提供程序
- tsql - 如何清理数据库中多个表中的数据?
- sass - 为什么我收到无降序特异性错误?
- java - 在java Stream API中,中间操作被延迟执行而终端操作被急切执行是什么意思?
- android - onBindViewHolder() 没有获得价值
- wordpress - Fishpig Magento 布局问题