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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 | 'Решение SPSS AnswerNet 100006374
'Продукт: SPSS Base
'Версия: 8.0
'Тема:
'Скрытие столбца (например, "Frequency") в мобильной таблице
'Описание:
'Вопрос.
'Я использую SPSS 8.0 для Windows. В работе мне часто приходится строить частотные таблицы, но столбец
'"Frequency" мне совершенно не нужен. Можете ли вы предложить какой-то скрипт, который бы скрывал этот столбец?
'Ответ.
'Ниже предложена процедура HideColumnLabelColumn. Она ищет в метках столбцов заданную текстовую строку
'(например, "Frequency"). Когда находится столбец с такой меткой, процедура устанавливает его ширину
'в один пункт, что делает данный столбец скрытым.
'Для того, чтобы вызвать процедуру HideColumn из автоскрипта:
'Добавьте процедуру в файла автоскрипта (Autoscript.sbs, по умолчанию (можно в конец файла, например).
'Постройте типовую таблицу ("Frequencies", например), щёлкните на ней правой кнопкой мыши, выберите
'"Create/Edit Autoscript", и в процедуру, где окажется курсор, добавьте следующий код, например:
'Dim objPivot As PivotTable
'Set objPivot = objTable
'HideColumn objPivot, "Frequency"
'После этого проверьте настройку параметров в меню Edit->Options, вкладка Script. Убедитесь, что
'напротив имени отредактированной процедуры стоит галочка.
'Размещение: http://www.spsstools.ru/Scripts/PivotTables/HideAColumnInPivotTable.txt (.sbs).
'Перевод: А. Балабанов, 31.12.2008.
'Проверено: SPSS 15.0.0.
'Вот как может выглядеть модифицированная процедура в файле автоскрипта:
_______________________________________________________
Sub Frequencies_Table_Frequencies_Create(objTable As Object, _
objOutputDoc As Object, lngIndex As Long)
'Автоскрипт
'Запускающее событие: создание таблицы частот после выполнения команды Frequencies.
'Действия: проходит по меткам строк, находит метку "Total", и выделяет метку "Total" и
'соответствующую строку данных жирным шрифтом
Dim bolSelection As Boolean
Call SelectRowLabelsAndData(objTable, cTOTAL, bolSelection)
If bolSelection = True Then
objTable.TextStyle = 2 'полужирный шрифт
End If
'--- эта часто добавлена нами для того, чтобы скрывать колонку с пометкой "Frequency" ---
Dim objPivot As PivotTable
Set objPivot = objTable
HideColumn objPivot, "Frequency"
End Sub
'_______________________________________________________
'Далее приводятся примеры использования процедуры HideColumn как самостоятельного скрипта
'и как процедуры в автоскрипте. При вызове этой процедуры из другой процедуры можно осуществить
'вызов, например, ко всем таблицам в окне результатов и т.д.
'См. другие решения на http://support.spss.com/Tech/default.asp
'_______________________________________________________
'********** Пример использования процедуры HideColumn в качестве самостоятельного скрипта **********
'--- Сохраните процедуру, приведённую ниже в файле "HideColumn.SBS"
' Выделите нужную сводную таблицу и запустите скрипт "HideColumn.SBS"
Sub Main
Dim objPivot As PivotTable
Dim objItem As ISpssItem
Dim bolFoundOutput As Boolean, bolFoundPivot As Boolean
GetFirstSelectedPivot objPivot, objItem, _
bolFoundOutput, bolFoundPivot
If Not (bolFoundOutput And bolFoundPivot) Then
Exit Sub
End If
HideColumn objPivot, "Frequency"
objItem.Deactivate
End Sub
'********** Для использования решения в качестве автоскрипта **********
'--- вставьте весь код, расположенный ниже, в конец файла Autoscript.sbs ---
'Процедура HideColumn осуществляет поиск запрошенной метки и скрывает колонку с найденной меткой.
'Вызов HideColumn осуществляется из другой процедуры.
Sub HideColumn (objPivot As PivotTable, strLabel As String)
Dim objColLabels As ISpssLabels
Dim i As Integer, j As Integer
Set objColLabels = objPivot.ColumnLabelArray
With objColLabels
For i = .NumRows - 1 To 0 Step -1
For j = 0 To .NumColumns - 1
If Not IsNull(.ValueAt(i,j)) Then
If .ValueAt(i,j) = strLabel Then
objPivot.UpdateScreen = False
'делаем ширину колонки равной 1, чтобы скрыть её
.ColumnLabelWidthAt(i,j) = 1
objPivot.UpdateScreen = True
'Exit Sub
End If
End If
Next
Next
End With
End Sub
|