繁体   English   中英

从Workbook1中对Workbook2中的数据进行排序

[英]Sorting Data in Workbook2 from Workbook1

我不确定为什么下面的代码不起作用。 我正在使用它作为更大的VBA子的一部分,但我只是发布下面的相关代码

我想在单独的工作簿上对范围(A到Z)进行排序。 范围是“A5:M600”,工作表是“领导者”。 它存储在声明为'wb2'的工作簿中。

下面的代码将打开我想要执行排序的文件,选择我想要排序的范围,但它实际上不会对选择进行排序。

有任何想法吗?

Sub SortWB2()
Dim wb2 As Workbook
Dim RetFilePath

'~~> Get the file path
RetFilePath = "T:\Purchasing\ADVENTURE RMS\Data Files\2015\Data.xlsx"

'if file path is not found, then exit the sub below
If RetFilePath = False Then Exit Sub

'set wb2 to open the file
Set wb2 = Workbooks.Open(RetFilePath)


With wb2.Worksheets("Leaders").Sort
    .SetRange Range("A5:M600")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Application.DisplayAlerts = False
wb2.Close SaveChanges:=True
Application.DisplayAlerts = True


Set wb2 = Nothing

End Sub

尝试从远离.Activate.Select的方式引导你的代码的目标。

Set wb2 = Workbooks.Open(RetFilePath)

With wb2.Worksheets("Leaders").Range("A5:M600")
    .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
                Key2:=.Columns(3), Order2:=xlDescending, _
                Orientation:=xlTopToBottom, Header:=xlNo
End With

这将把A列排序为主键,然后将列C排序为辅助键。 如果不需要,您可以删除辅助密钥。 您可以添加第三个键(例如Key3:=.Columns(14), Order3:=xlAscending用于列N上升)但它最多有三个键。 如果需要更多,可以将命令加倍。

请参阅如何避免在Excel VBA宏中使用Select以获取更多方法, 以避免依赖select和activate来实现目标。

嗯,可能你应该明确你的范围。 尝试使用With语句:

With wb2.Worksheets("Leaders").Sort
    .SetRange wb2.worksheets("Leaders").Range("A5:M600")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

我想(希望!)这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM