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
'Begin Description
'Скрипт удаляет все подписи строк и столбцов в выделенной мобильной таблице (Pivot Table).
'Условия: интересующая вас таблица должна быть выделена перед запуском скрипта.
'End Description
'НАЗНАЧЕНИЕ
	'Скрипт удаляет все метки строк и столбцов в выделенной мобильной таблице
	
'УСЛОВИЯ
	'Таблица выделена в навигаторе результатов (документе Output).
	'Кроме того, окно навигатора с нужной таблицей является текущим окном назначения (Designated Window)
	
'ЭФФЕКТ
	'Подписи строк и столбцов заменяются строками нулевой длины
	
'СОВЕТЫ
	'Если вы - новичок в SPSS-программировании, щёлкните раздел Scripting Tips в меню
	'Help. Так вы сможете получить первичную информацию по составлению и использованию скриптов.

	'Для получения сведений об объектах SPSS, к которым можно получить доступ через скрипты,
	'их свойствах и методах, нажмите F2.

	'Для контекстной подсказки по синтаксису Sax Basic и объектам программирования SPSS,
	'их свойствам и методам, подведите курсор к нужной части программного кода и нажмите F1.

' Перевод: А. Балабанов, 15.11.2008
' Проверено: SPSS 15.0.1.1.

Option Explicit		'Все переменные перед использованием должны быть явно объявлены
'***********************************************************************
Sub Main
'Объявление переменных
	Dim objPivotTable As PivotTable
	Dim objItem As ISpssItem

	Dim bolFoundOutputDoc As Boolean
	Dim bolPivotSelected As Boolean

	'Следующая процедура - глобальная процедура, хранящаяся в главном файле скриптов SPSS global.sbs
    Call GetFirstSelectedPivot(objPivotTable, objItem, bolFoundOutputDoc, bolPivotSelected)

	If (bolFoundOutputDoc = False) Or (bolPivotSelected = False) Then
		'либо отсутствует объект output, либо таблица не была выделена
		Exit Sub
	End If

'Следующая инструкция вызывает процедуру, непосредственно очищающую подписи строк и столбцов
    Call BlankLabels(objPivotTable)
    
    objItem.Deactivate
		
End Sub
'**********************************************************************
Sub BlankLabels(objPivotTable As PivotTable)
'Назначение: удаляет подписи всех строк и столбцов в мобильной таблице (Pivot Table)
'Условия: мобильная таблица уже активирована
'Результаты: подписи строк и столбцов будут пусты (заменятся на строки нулевой длины)
'Входные параметры: objPivotTable -- ссылка на выделенную мобильную таблицу
'Возвращает: мобильная таблица со "стёртыми" подписями строк и столбцов


 'Объявление переменных для специальных объектов SPSS
    Dim objColLabels As ISpssLabels
    Dim objRowLabels As ISpssLabels
    Dim objDataCells As ISpssDataCells

'Объявление некоторых целочисленных индексных переменных
    Dim lngRowNum As Long
    Dim lngColNum As Long
    Dim lngNumCols As Long
    Dim lngNumRows As Long
              
'Установим ссылки на нужные объекты SPSS
    Set objDataCells = objPivotTable.DataCellArray()
    Set objColLabels = objPivotTable.ColumnLabelArray()
    Set objRowLabels = objPivotTable.RowLabelArray()
    
    
	lngNumCols = objColLabels.NumColumns
	lngNumRows = objColLabels.NumRows
	
	
	'Извлечение подписей столбцов
	'Метки с индексом (1,N) не существует, поэтому к ней не обращаемся
	       
	For lngRowNum = 0 To lngNumRows - 1
	    For lngColNum = 0 To lngNumCols - 1
	        If Not IsNull(objColLabels.ValueAt(lngRowNum,lngColNum)) Then
	            objColLabels.ValueAt(lngRowNum,lngColNum) = ""
	        End If
	    Next lngColNum
	Next lngRowNum
	
	lngNumCols = objRowLabels.NumColumns
	lngNumRows = objRowLabels.NumRows
	 
	'Извлечение меток строк
	'Метки с индексом (N,1) не существует, поэтому к ней не обращаемся
	
	For lngRowNum = 0 To lngNumRows - 1
	    For lngColNum = 0 To lngNumCols - 1
	        If Not IsNull(objRowLabels.ValueAt(lngRowNum,lngColNum)) Then
	            objRowLabels.ValueAt(lngRowNum,lngColNum) = ""
	        End If
	    Next lngColNum
	Next lngRowNum
    
End Sub
'*******************************************************************