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