Камрады!
Я создал макрос, который подлючается к базе данных SQL
Таблица огромная и после того как данные отображаются,
- делаю сортировку по нужным мне парметрам
- scrolling
- cut
- открываю новые tab
- удаляю из таблицы несколько десятков колонок, так как они мне не нужны для статистики
...
типа вот таких блоковЖ
Всё это отображается в макросе
3 основных вопроса:
1. Как можно оспользовать QUERY, который делает всё эту фильтрацию, а не тащит в макросе, все действия, чтобы макрос просто запустил QUERY
или что-то похожее.
2, Как можно в синтаксисе макроса, прописат слеуюший фильтр для столбца Даты:
-> Текущая дата -30 дней
3, Чтобы такая фильтрация была применима для 10 tab одновременно (каждый по своему дополнительному стрингу)
Т.е. задача при каждом открытие .xmls файла, чтобы вытаскивались автоматически -30 дней данных от текущей из базы данных
Я создал макрос, который подлючается к базе данных SQL
Код |
---|
Sub Macro2() ' ' Macro2 Macro ' ' With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _ "OLEDB;Provider=SQLOLEDB.1;Password=xdr5%RDX;Persist Security Info=True;User ID=OptimalAdmin;Data Source=OTVSQL02;Use Procedure for Pre" _ , _ "pare=1;Auto Translate=True;Packet Size=4096;Workstation ID=VCHARNY-G2;Use Encryption for Data=False;Tag with column collation wh" _ , "en possible=False;Initial Catalog=PerformanceResults"), Destination:=Range( _ "$A$1")).QueryTable .CommandType = xlCmdTable .CommandText = Array( _ """PerformanceResults"".""dbo"".""BenchmarkTestsSummary""") .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .SourceConnectionFile = _ "C:\Users\VCharny\Documents\My Data Sources\OTVSQL02 PerformanceResults BenchmarkTestsSummary1.odc" .ListObject.DisplayName = _ "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1" .Refresh BackgroundQuery:=False End With |
Таблица огромная и после того как данные отображаются,
- делаю сортировку по нужным мне парметрам
- scrolling
- cut
- открываю новые tab
- удаляю из таблицы несколько десятков колонок, так как они мне не нужны для статистики
...
типа вот таких блоковЖ
Код |
---|
ActiveSheet.ListObjects( _ "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1").Range.AutoFilter _ Field:=3, Criteria1:="QAPerformanceVertica" Columns("A:A").Select Selection.Delete Shift:=xlToLeft ActiveSheet.ListObjects( _ "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1").Range.AutoFilter _ Field:=1, Criteria1:=Array("7.4.4247.0", "7.4.4280.0", "7.4.4340.0"), _ Operator:=xlFilterValues ActiveWindow.SmallScroll ToRight:=3 Range("H:H,I:I,J:J,K:K,L:L,M:M,N:N,O:O,P:P,Q:Q,R:R,S:S").Select Range( _ "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1[[#Headers],[Extract data: Analyze_Statistics]]" _ ).Activate |
Всё это отображается в макросе
3 основных вопроса:
1. Как можно оспользовать QUERY, который делает всё эту фильтрацию, а не тащит в макросе, все действия, чтобы макрос просто запустил QUERY
или что-то похожее.
2, Как можно в синтаксисе макроса, прописат слеуюший фильтр для столбца Даты:
-> Текущая дата -30 дней
3, Чтобы такая фильтрация была применима для 10 tab одновременно (каждый по своему дополнительному стрингу)
Т.е. задача при каждом открытие .xmls файла, чтобы вытаскивались автоматически -30 дней данных от текущей из базы данных
Изменено: vikonder - 22.04.2020 18:10:12