Buonasera a Tutti,
piccolo problema, premetto di aver cercato in tutti gli Help possibili (penso!!!) ma senza risutato, ho scritto una function che mi crea dei files excel, prelevando solo i primi 40 record estratti secondo un criterio di ordinamento inserito nella select.

Il mo problema è questo:
dopo aver esportato i dati in un file ecel devo ordinarli secondo la colonna g, ci sto sbattendo la testa da un po di tempo e nulla.

Il codice l'ho mutuato facendo una macro da excel, ma come facilmente intuibile non funziona.

Chi mi da una mano? posto il codice per facilità.

Grazie in anticipo.
codice:
Function X4511SS()
Dim xlApp As Object
Dim oWks As Object

Dim mRst As DAO.Recordset
Dim r As Integer

    'On Error GoTo Handle_err
    Dim strSh   As String
    Dim oshe    As Object
    Dim X       As Integer
    Dim giorno  As Date
    Dim DT As Date
    Dim SS As String
    Dim CODA As String
    Dim DE_A As Variant
    Dim DEA As String
    
    CODA = 4511
    DE_A = DLookup("[DA]", "TSS", "[CA] = 4511")
    DEA = DE_A
    giorno = DLookup("[datarif]", "CalcoloPdt")
    'DT = DLookup("[pd]", "TSS")
    'manc = DLookup("[ggf]", "CalcoloPdt")

   
    
    ' APRE SE ESISTE GIA' UN'OGGETTO EXCEL
    Set xlApp = CreateObject("Excel.Application")

    Set oWkb = xlApp.Workbooks.Add()

    oWkb.SaveAs CurrentProject.Path & "/_xls/4511TOP40PDSS_" & Format(giorno, "ddMMyyyy") & ".xls"
    
    ' Elimino i Fogli che Excel crea di DEFAULT
    For X = oWkb.Sheets.Count To 2 Step -1
        oWkb.Sheets(X).Delete
    Next
     ' Alla fine rendo visibile EXCEL
    xlApp.Visible = True
    
    ' Assegno un nome al Foglio(Sheet) rimasto.
    oWkb.Sheets(1).Name = "PD_SS_TOP40"
    
    ' Scrivo l'intestazione iniziale
    oWkb.Sheets(1).Range("A2").Value = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
  oWkb.Sheets(1).Range("A1").Value = "xxxxxxxxxxxxxxxxx"  " & CODA & "    " & DEA
     oWkb.Sheets(1).Range("A3").Value = "Giorni Mancanti   " & manc
     oWkb.Sheets(1).Range("g3").Value = "ESTRAZIONE DEL"
    oWkb.Sheets(1).Range("K3").Value = giorno
    oWkb.Sheets(1).Range("a4").Value = "COD"
    oWkb.Sheets(1).Range("b4").Value = "DENOMINAZIONE"
    oWkb.Sheets(1).Range("C4").Value = "NDG"
    oWkb.Sheets(1).Range("D4").Value = "INTESTAZIONE"
    oWkb.Sheets(1).Range("E4").Value = "SALDO"
    oWkb.Sheets(1).Range("F4").Value = "SCONF"
    oWkb.Sheets(1).Range("G4").Value = "%SCONF"
    oWkb.Sheets(1).Range("H4").Value = "GG"
    oWkb.Sheets(1).Range("I4").Value = "P/B"
    oWkb.Sheets(1).Range("J4").Value = "OrgDel"
    oWkb.Sheets(1).Range("k4").Value = "NOTE"
    oWkb.Sheets(1).Range("A1:K2").select
    'Imposto il FONT in Grassetto a dimensiono a 12 le prime 4 righe e metto i bordi solo nelle righe
    oWkb.Sheets(1).ROWS("1:2").select
    xlApp.Application.Selection.Font.Bold = True
    xlApp.Application.Selection.Font.Size = 12
    oWkb.Sheets(1).ROWS("3:4").select
    xlApp.Application.Selection.Font.Bold = True
    xlApp.Application.Selection.Font.Size = 10
    oWkb.Sheets(1).Range("a5:k44").select
    xlApp.Application.Selection.borders(4).LineStyle = 2 'Size = 8
    oWkb.Sheets(1).Range("i5:k44").select
    xlApp.Application.Selection.borders(1).LineStyle = 2
    oWkb.Sheets(1).Range("a4:k4").select
    xlApp.Application.Selection.interior.colorindex = 15
    oWkb.Sheets(1).ROWS("5:50").select
    xlApp.Application.Selection.Font.Size = 8
    
    
    
    
    oWkb.Sheets(1).Range("e46").select
    xlApp.Application.Selection.Font.Bold = True
    oWkb.Sheets(1).Range("f46").select
    xlApp.Application.Selection.Font.Bold = True
    ' Seleziono la Cella A1
     oWkb.Sheets(1).Range("a1").select

    'Unisco le celle da a1 a K1
                  oWkb.Sheets(1).Range("A1:K1").select
                     With Selection
                      oWkb.Sheets(1).Range("A1:K1").MergeCells = True
                     End With
                             'Unisco celle A2 K2
                                oWkb.Sheets(1).Range("A2:K2").select
                                 With Selection
                                   oWkb.Sheets(1).Range("A2:K2").MergeCells = True
                                     End With
                                      Const xlCenter = -4108
                                       'Unisco celle A2 K2
                                oWkb.Sheets(1).Range("A3:B3").select
                                 With Selection
                                   oWkb.Sheets(1).Range("A3:B3").MergeCells = True
                                     End With
                                      'Const xlCenter = -4108
        With oWkb.Sheets(1)
         .select
         .Range("A1:J4").select
         xlApp.Selection.HorizontalAlignment = xlCenter
        End With
                                     'Unisco celle da g3 a J3
                                        oWkb.Sheets(1).Range("g3:j3").select
                                         With Selection
                                          oWkb.Sheets(1).Range("g3:j3").MergeCells = True
                                           End With
                                       oWkb.Sheets(1).ColumnS("a:k").EntireColumn.AutoFit
                                        oWkb.Sheets(1).ColumnS("b").ColumnWidth = 19
                                         oWkb.Sheets(1).ColumnS("C").ColumnWidth = 8
                                            oWkb.Sheets(1).ColumnS("G").Style = "Percent"
                                              oWkb.Sheets(1).ColumnS("G").NumberFormat = "0.00%"
                                               oWkb.Sheets(1).ColumnS("e").NumberFormat = "#,##0"
                                                oWkb.Sheets(1).ColumnS("e").ColumnWidth = 9
                                                 oWkb.Sheets(1).ColumnS("f").NumberFormat = "#,##0"
                                                  oWkb.Sheets(1).ColumnS("f").ColumnWidth = 9
                                                   oWkb.Sheets(1).ColumnS("d").ColumnWidth = 35
                                                    oWkb.Sheets(1).ColumnS("k").ColumnWidth = 27
                                                     oWkb.Sheets(1).Range("5:44").RowHeight = 12
                               
  
    Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 1) = mRst.Fields(2) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 2) = mRst.Fields(3) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 3) = mRst.Fields(4) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 4) = mRst.Fields(5) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 5) = mRst.Fields(6) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 6) = mRst.Fields(7) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 7) = mRst.Fields(8) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
Set mRst = DBEngine(0)(0).OpenRecordset("Select top 40 * from TSS where [ca]=4511 order by [saldo] desc") ' apre tabella access
mRst.MoveFirst
r = 1
Do Until mRst.EOF
    oWkb.Worksheets("PD_SS_TOP40").cells(r + 4, 8) = mRst.Fields(9) ' scrive a partire da A1 il primo campo della tbl access
    mRst.MoveNext
    r = r + 1
Loop
mRst.Close
Set mRst = Nothing

    ' Alla fine rendo visibile EXCEL
    xlApp.Visible = True
    
    
   ' Aggiungo Totali alle Colonne E ed F
     oWkb.Sheets(1).Range("e46").Value = "=SUM(e5:e44)"
      oWkb.Sheets(1).Range("f46").Value = "=SUM(f5:f44)"
       oWkb.Sheets(1).Range("E46").select
        xlApp.Application.Selection.interior.colorindex = 15
         oWkb.Sheets(1).Range("F46").select
          xlApp.Application.Selection.interior.colorindex = 15
           ' Seleziono la Cella A1
             oWkb.Sheets(1).Range("a1").select
             
[COLOR=red]
             'ORDINO I DATI NEL FILE EXCEL
   
            oWkb.Worksheets(1).Range("a5:k44").select
            with selection.Sort.Key1 = ("G5"),  Order1.xlDescending, Header.xlGuess ,OrderCustom = 1, MatchCase = False, Orientation = xlTopToBottom, DataOption1 = xlSortNormal
             
 [/COLOR=red]
             
             'Setto l'area di stampa
             
             oWkb.Sheets(1).Range("A1:K46").select
               oWkb.Sheets(1).Range("K46").Activate
                oWkb.Sheets(1).PageSetup.PrintArea = "$A$1:$K$46"
                'oWkb.Sheets(1).PageSetup
                  oWkb.Sheets(1).PageSetup.LeftHeader = ""
                   oWkb.Sheets(1).PageSetup.CenterHeader = ""
                    oWkb.Sheets(1).PageSetup.RightHeader = ""
                     oWkb.Sheets(1).PageSetup.LeftFooter = ""
                      oWkb.Sheets(1).PageSetup.CenterFooter = ""
                       oWkb.Sheets(1).PageSetup.RightFooter = ""
                        oWkb.Sheets(1).PageSetup.LeftMargin = xlApp.Application.InchesToPoints(0)
                         oWkb.Sheets(1).PageSetup.RightMargin = xlApp.Application.InchesToPoints(0)
                          oWkb.Sheets(1).PageSetup.TopMargin = xlApp.Application.InchesToPoints(0)
                           oWkb.Sheets(1).PageSetup.BottomMargin = xlApp.Application.InchesToPoints(0)
                            oWkb.Sheets(1).PageSetup.HeaderMargin = xlApp.Application.InchesToPoints(0)
                             oWkb.Sheets(1).PageSetup.FooterMargin = xlApp.Application.InchesToPoints(0)
                              '.PrintHeadings = False
                               '.PrintGridlines = False
                               ' .PrintComments = xlPrintNoComments
                                 oWkb.Sheets(1).PageSetup.CenterHorizontally = True
                                  oWkb.Sheets(1).PageSetup.CenterVertically = True
                                  'oWkb.Sheets(1).PageSetup.PaperSize = xlPaperA4
                                    oWkb.Sheets(1).PageSetup.FirstPageNumber = xlAutomatic
                                    'oWkb.Sheets(1).PageSetup.Order = xlDownThenOver
                                     'oWkb.Sheets(1).PageSetup.BlackAndWhite = False
                                        oWkb.Sheets(1).PageSetup.Zoom = False
                                         oWkb.Sheets(1).PageSetup.Draft = False
                                         oWkb.Sheets(1).PageSetup.FitToPagesWide = 1
                                          oWkb.Sheets(1).PageSetup.FitToPagesTall = 1
                                           oWkb.Sheets(1).PageSetup.PrintErrors = xlPrintErrorsDisplayed
                                            oWkb.Sheets(1).PageSetup.Orientation = 2

                                             
                                             'ActiveWindow.SelectedSheets.PrintPreview
             
  ' Seleziono la Cella A1
             oWkb.Sheets(1).Range("a1").select
             
                xlApp.ActiveWorkbook.Save
                xlApp.ActiveWorkbook.Close