Добрый день, ув. форумчане
Есть ли возможность обработать обьект Recordset "на лету"
и выгрузить данные на лист в уже нужном виде пока есть вот такой код,
который не отрабатывает в части SourceData:=rs. Возможно ли обойти проблему?
Есть ли возможность обработать обьект Recordset "на лету"
и выгрузить данные на лист в уже нужном виде пока есть вот такой код,
который не отрабатывает в части SourceData:=rs. Возможно ли обойти проблему?
Код |
---|
Sub test27() Dim strConn$, strSQL$, rs As Object, cn As Object, QTable As QueryTable, objPivotCache As Object Set rs = CreateObject("ADODB.Recordset"): Set cn = CreateObject("ADODB.Connection") Sheets("12").[A1].CurrentRegion.ClearContents Sheets("Data").Activate strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Data Source=" & ThisWorkbook.FullName strConn = strConn & ";Extended Properties=""Excel 12.0;HDR=true"";" strSQL = "Select colPIB,colRegistrationTime, colProf From [Data$] As t1 Inner Join [ar$] As t2 On (t1.colTabNumber=t2.colTabNumber)" cn.Open strConn rs.Open strSQL, cn 'Set QTable = Sheets("12").QueryTables.Add(rs, Sheets("12").Range("A1")): QTable.Name = "Temp" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rs, Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:=Sheets("12").[a3], TableName:="sd", DefaultVersion:=xlPivotTableVersion14 With ActiveSheet.PivotTables("sd") With .PivotFields("colPIB") .Orientation = xlRowField .Position = 1 End With With .PivotFields("colRegistrationTime") .Orientation = xlRowField .Position = 2 End With With .PivotFields("colProf") .Orientation = xlPageField .Position = 1 End With End With 'QTable.Refresh rs.Close: cn.Close Set cn = Nothing: Set rs = Nothing ActiveWorkbook.Sheets("12").Activate End Sub |