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

	'Для получения информации об объектах автоматизации SPSS, их методах и свойствах,
	'нажмите в редакторе скриптов клавишу F2 - отобразится Object Browser - навигатор по объектам.

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


Option Explicit		'Указание на то, что все переменные должны быть явно объявлены перед использованием

'Установка констант на уровне скрипта
Const cSIG As String = "Sig."
Const cP_EQUAL As String = "p="

'***********************************************************************
Sub Main

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

	If (bolFoundOutputDoc = False) Or (bolPivotSelected = False) Then
		'признак того, что, либо нет окна Output, либо не выделена мобильная таблица
		Exit Sub
	End If

    Call CrosstabsSigToP(objPivotTable)	'Процедура CrosstabsSigToP (см. ниже) заменяет "Sig." на "p="
    
    objItem.Deactivate
		
End Sub
'**********************************************************************
Sub CrosstabsSigToP(objPivotTable As PivotTable)
'Назначение: изменяет метку столбца, содержащего информацию об уровнях значимости
'Условия: выделена мобильная таблица, содержащая подстроку "Sig." по крайней мере в одной метке столбца
'Действия: любая метка столбца, содержащая подстроку "Sig." будет заменена строкой "p="
'Входные данные: выделенная мобильная таблица
'Выходные данные: мобильная таблица с изменёнными метками столбцов

'Объявление объектных переменных SPSS
    Dim objColLabels As ISpssLabels

'Объявление прочих переменных (целочисленных индексов)
    Dim lngRowNum As Long
    Dim lngColNum As Long
    Dim lngNumCols As Long
    Dim lngNumRows As Long

    Set objColLabels = objPivotTable.ColumnLabelArray()
    lngNumCols = objColLabels.NumColumns
    lngNumRows = objColLabels.NumRows

'Т.к. метка столбца может состоять из нескольких строк, пробегаемся по всем строкам таких меток

    For lngRowNum = 0 To lngNumRows - 1
    	For lngColNum = 0 To lngNumCols - 1
	        If InStr(objColLabels.ValueAt(lngRowNum,lngColNum), cSIG) > 0 Then
	            objColLabels.ValueAt(lngRowNum,lngColNum) = cP_EQUAL
	        End If
		Next lngColNum
    Next lngRowNum
           
End Sub
'*******************************************************************