我在以下代码的以下行中收到了对象或应用程序定义的错误:
.Range("A2", .Range("E2").End(xlDown)).Sort Columns("C"), xlAscending
以下内容:
Dim Exl As Object
Dim xlWB As Excel.Workbook
Set Exl = New Excel.Application
Set xlWB = Exl.Workbooks.Open(FileName)
Debug.Print Dir(TxtPath & "\BOMTable_" & swModel.GetTitle() & ".txt")
'RENAME SHEET 1 "RAW"
xlWB.ActiveSheet.Name = "RAW"
xlWB.Worksheets("RAW").Activate
Debug.Print xlWB.Worksheets(1).Name
'FORMAT AND COPY RAW EXCEL SHEET
With xlWB.Worksheets("RAW")
.Columns("A:E").HorizontalAlignment = xlCenter
.Columns("A:C").ColumnWidth = 15
.Columns("E:E").ColumnWidth = 10
.Columns("D:D").ColumnWidth = 50
.Range("A2", .Range("E2").End(xlDown)).Sort Columns("C"), xlAscending
End With
代码在SolidWorks中运行并打开文本文件以进行编辑。它通常在第一次尝试时按预期运行,但之后我得到了对象定义的错误。
有时错误也是"远程服务器机器不存在或不可用"或运行时错误1004"公式缺少范围引用或定义的框架"
有没有人知道这方面的解决方案?
答案 0 :(得分:0)
更改
Set Excel = New Excel.Application
到
Set Exl = New Excel.Application
答案 1 :(得分:0)
怎么样?
.Range("A2", .Range("E2").End(xlDown)).Sort .Range("C2"), xlAscending
答案 2 :(得分:0)
我不熟悉SolidWorks的语法(以及它作为各种默认值使用的内容),但在VBA中,行
With xlWB.Worksheets("RAW")
'...
.Range("A2", .Range("E2").End(xlDown)).Sort Columns("C"), xlAscending
'...
End With
相当于:
xlWB.Worksheets("RAW").Range("A2", xlWB.Worksheets("RAW").Range("E2").End(xlDown)).Sort Application.ActiveWorkbook.ActiveSheet.Columns("C"), xlAscending
xlWB.Worksheets("RAW").Range("A2", xlWB.Worksheets("RAW").Range("E2").End(xlDown))
部分正在定义一个范围,然后将Sort
方法应用于该范围。
Application.ActiveWorkbook.ActiveSheet.Columns("C")
部分也定义了一个范围,该范围将用作排序的排序键。
因为您尝试使用不属于要排序范围的键,所以会生成错误。
您可以通过将代码更改为
来解决该特定错误(可能是,也可能不是导致您的问题的错误)With xlWB.Worksheets("RAW")
'...
.Range("A2", .Range("E2").End(xlDown)).Sort .Columns("C"), xlAscending
'...
End With
即。 插入缺失的期间。然后,这将确保从xlWB.Worksheets("RAW").Columns("C")
获得排序键。