【发布时间】:2021-12-29 04:53:47
【问题描述】:
我编写了下面的代码来对 excel 列进行排序,例如:
Sub deneme()
Workbooks("macro.xlsm").Activate
Dim excelApp As New Excel.Application
excelApp.Visible = False
excelApp.Workbooks.Open Filename:="C:\Users\cildi\Desktop\sortdeneme\New\new.xlsx"
Dim excelsWbk As Object
Set excelsWbk = excelApp.Workbooks("new.xlsx")
excelsWbk.Sheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key _
:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With excelsWbk.Sheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
但我收到错误“运行时错误。自动化错误。远程过程调用失败” 在线:
excelsWbk.Sheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key _
:=Range("A2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
我搜索但找不到任何解决方案。
感谢您的帮助。
【问题讨论】:
-
Range("A2")需要限定:excelsWbk.Sheets("Sheet1").Range("A2")- 另外,请确保excelsWbk已正确设置为您想要的。 -
感谢您的评论。还是一样的错误:(
-
为什么要打开一个新的 Excel 实例?
-
这是否意味着您验证的
excelsWbk不等于Nothing? -
如果没有应用自动过滤器,可能会发生错误。要让
excelsWbk.Sheets("Sheet1").AutoFilter.....工作,应该已经有一个自动过滤器......否则你会得到Run-time error 91: Object variable or With block variable not set,因为它找不到自动过滤器。