1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
' Экспорт таблицы результатов в редактор данных.SBS
' Данные из активного слоя выделенной таблицы результатов (Pivot Table) отсылаются в редактор данных.
' Автор: Raynald Levesque, rlevesque@videotron.ca, 2.7.2001

Sub Main

        Dim objPivotTable As PivotTable
        Dim objItem As ISpssItem
        Dim bolFoundOutput As Boolean, bolFoundPivot As Boolean
        
        Dim objDataCells As ISpssDataCells      
        Dim strPivotData As String
        
        Call GetFirstSelectedPivot(objPivotTable, objItem, bolFoundOutput, bolFoundPivot)
        
        If Not bolFoundOutput And bolFoundPivot Then
                Exit Sub
        End If
        Set objDataCells = objPivotTable.DataCellArray
  
		'Получим данные
        strPivotData = PivotToTab(objDataCells, _
                0, objDataCells.NumRows - 1, _
                0, objDataCells.NumColumns - 1)
		
		' Сохраним данные в текстовый файл, а потом загрузим их в редактор данных
		Call ExportPivotTableDataToDataEditor (strPivotData, objDataCells.NumColumns)
		objItem.Deactivate	
End Sub

Sub  ExportPivotTableDataToDataEditor (strPivotData As String, lngLastColumn As Long)
        Dim i As Long
        ' процедура сохраняет данные во временный текстовый файл, а потом загружает их в редактор
 	 	Open "c:\\temp\\datacells.txt" For Output As #1
        Print #1, strPivotData      
		Close #1
             
		'Импорт из текстового файла в редактор данных
        Dim strCommand As String
        strCommand = "DATA LIST FILE='c:\\temp\\datacells.txt' LIST (TAB) /col1"
        For  i=2 To lngLastColumn 
		strCommand = strCommand & " col" & i
		Next i
		strCommand = strCommand &"." & vbCr
        strCommand= strCommand & "." & vbCr & "EXECUTE." & vbCr
        objSpssApp.ExecuteCommands strCommand, False
End Sub


Function PivotToTab(objCells As ISpssDataCells, _
        lngFirstRow As Long, lngLastRow As Long, _
        lngFirstColumn As Long, lngLastColumn As Long) As String
    
    Dim strWork As String
    Dim i As Long, j As Long
    
    On Error GoTo ErrorHandler
       
    For i = lngFirstRow To lngLastRow
        For j = lngFirstColumn To lngLastColumn - 1
            strWork = strWork & objCells.ValueAt(i, j) & vbTab
        Next
        strWork = strWork & objCells.ValueAt(i, lngLastColumn) & vbCrLf
    Next
    
    PivotToTab = strWork
    
    Exit Function
    
ErrorHandler:
    Debug.Print "PivotToTab: Error " & Err & vbCrLf & Err.Description
    Err.Clear
    
    PivotToTab = ""
End Function