簡體   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