Чтобы быть понятным:
Это просто обходной путь, так как вы используете Excel в качестве источника данных для Excel ...
Вы можете фильтровать и сортировать свой рабочий лист источника данных в соответствии с вашим SQLиспользуйте и используйте оставшийся видимый диапазон для дальнейших целей, например, чтобы скопировать его на другой лист:
Private Sub CopyWithoutSQL()
Dim ws As Worksheet
Dim n As Long
Dim OptimizedScenarioNo As String
Set ws = ActiveWorkbook.Sheets("Test Plan")
OptimizedScenarioNo = "whatever"
' switch all filters off
If Not ws.AutoFilterMode Then ws.Rows(1).AutoFilter
If ws.AutoFilter.FilterMode Then ws.ShowAllData
' filter according to SQL statement
n = ws.Range("1:1").Find(What:="Optimized Scenario No", After:=Range("A1")).Column
ws.UsedRange.AutoFilter Field:=n, Criteria1:="=" & OptimizedScenarioNo
n = ws.Range("1:1").Find(What:="Type", After:=Range("A1")).Column
ws.UsedRange.AutoFilter Field:=n, Criteria1:="Today"
' sort according to SQL statement
n = ws.Range("1:1").Find(What:="Seq", After:=Range("A1")).Column
With ws.Sort
.SortFields.Clear
.Header = xlYes
.SortFields.Add key:=Columns(n), SortOn:=xlSortOnValues, Order:=xlAscending
.SetRange ws.UsedRange
.Orientation = xlTopToBottom
.Apply
.SortFields.Clear
End With
' use the remaining visible range, e. g. copy it to somewhere
ws.UsedRange.Copy ActiveWorkbook.Sheets(2).Range("A1")
End Sub