Wolfiesaxah Posted January 28, 2015 Posted January 28, 2015 Hi guys, I am using an old version of Excel.au3 which I am not ready to update yet so please help me. The old Excel.au3 does not have any method for SORT. I attempted to create one since i need one but I am getting an error. Here's my sample code: $oAppl.Activesheet.UsedRange.sort($oAppl.Activesheet.cells(1,5),1,1) I thought this would work but I get the : ==> The requested action with this object has failed.: $oAppl.Activesheet.UsedRange.sort($oAppl.Activesheet.cells(1,$BidDayColNumber),1,1) $oAppl.Activesheet.UsedRange.sort($oAppl.Activesheet.cells(1,$BidDayColNumber),1,1)^ ERROR Any ideas or alternatives on sorting a range without calling from Excel.au3?
water Posted January 28, 2015 Posted January 28, 2015 The function that comes with the new Excel UDF lookcs like this. Docu can be found in the online help file. expandcollapse popupFunc _Excel_RangeSort($oWorkbook, $vWorksheet, $vRange, $vKey1, $iOrder1 = Default, $iSortText = Default, $iHeader = Default, _ $bMatchcase = Default, $iOrientation = Default, $vKey2 = Default, $iOrder2 = Default, $vKey3 = Default, $iOrder3 = Default) If Not IsObj($oWorkbook) Or ObjName($oWorkbook, 1) <> "_Workbook" Then Return SetError(1, 0, 0) If Not IsObj($vWorksheet) Then If $vWorksheet = Default Then $vWorksheet = $oWorkbook.ActiveSheet Else $vWorksheet = $oWorkbook.WorkSheets.Item($vWorksheet) EndIf If @error Or Not IsObj($vWorksheet) Then Return SetError(2, @error, 0) ElseIf ObjName($vWorksheet, 1) <> "_Worksheet" Then Return SetError(2, @error, 0) EndIf If $vRange = Default Then $vRange = $vWorksheet.Usedrange ElseIf Not IsObj($vRange) Then $vRange = $vWorksheet.Range($vRange) If @error Or Not IsObj($vRange) Then Return SetError(3, @error, 0) EndIf $vKey1 = $vWorksheet.Range($vKey1) If @error Or Not IsObj($vKey1) Then Return SetError(4, @error, 0) If $vKey2 <> Default Then $vKey2 = $vWorksheet.Range($vKey2) If @error Or Not IsObj($vKey2) Then Return SetError(5, @error, 0) EndIf If $vKey3 <> Default Then $vKey3 = $vWorksheet.Range($vKey3) If @error Or Not IsObj($vKey3) Then Return SetError(6, @error, 0) EndIf If $iHeader = Default Then $iHeader = $xlNo If $bMatchcase = Default Then $bMatchcase = False If $iOrientation = Default Then $iOrientation = $xlSortColumns If $iOrder1 = Default Then $iOrder1 = $xlAscending If $iSortText = Default Then $iSortText = $xlSortNormal If $iOrder2 = Default Then $iOrder2 = $xlAscending If $iOrder3 = Default Then $iOrder3 = $xlAscending If Int($oWorkbook.Parent.Version) < 112 Then ; Use Sort method for Excel 2003 and older $vRange.Sort($vKey1, $iOrder1, $vKey2, Default, $iOrder2, $vKey3, $iOrder3, $iHeader, Default, $bMatchcase, $iOrientation, Default, $iSortText, $iSortText, $iSortText) Else ; http://www.autoitscript.com/forum/topic/136672-excel-multiple-column-sort/?hl=%2Bexcel+%2Bsort+%2Bcolumns#entry956163 ; http://msdn.microsoft.com/en-us/library/ff839572(v=office.14).aspx $vWorksheet.Sort.SortFields.Clear $vWorksheet.Sort.SortFields.Add($vKey1, $xlSortOnValues, $iOrder1) If $vKey2 <> Default Then $vWorksheet.Sort.SortFields.Add($vKey2, $xlSortOnValues, $iOrder2) If $vKey3 <> Default Then $vWorksheet.Sort.SortFields.Add($vKey3, $xlSortOnValues, $iOrder3) $vWorksheet.Sort.SetRange($vRange) $vWorksheet.Sort.Header = $iHeader $vWorksheet.Sort.MatchCase = $bMatchcase $vWorksheet.Sort.Orientation = $iOrientation $vWorksheet.Sort.Apply EndIf If @error Then Return SetError(7, @error, 0) Return $vRange EndFunc ;==>_Excel_RangeSort My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now