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
'Следующий скрипт позволяет быстро определить число наблюдений в файле данных.
'Скрипт определит, включено или выключено взвешивание. Если включено,
'он спросит вас, желаете ли вы подсчитать взвешенное число наблюдений.
'Если вы ответите ОК, скрипт:

'1. Отключит взвешивание.
'2. Суммирует значения весовой переменной (командой DESCRIPTIVES). Сумма равна взвешенному числу наблюдений.
'3. Включит взвешивание снова.

'Вы можете создать отдельный пункт меню и связать его с этим скриптом, или запускать
'скрипт через меню Utilities/

'Решение очень удобно для взвешенных баз.

'Всего наилучшего.

'Автор: Rafael Osorio (Usenet,11 мая 2000 г.)re: Определить число наблюдений

Option Explicit

Dim DtDoc As ISpssDataDoc
Dim OutDoc As ISpssOutputDoc
Dim WeightName As String
Dim Cmd As String

Sub Main
	Set DtDoc = objSpssApp.Documents.GetDataDoc(0)
	WeightName = DtDoc.GetWeightingVariable(False)
	If WeightName = "" Then
		MsgBox "Взвешивание выключено: число наблюдений = "&DtDoc.GetNumberOfCases
	Else
		If MsgBox("Взвешивание (" &WeightName &") включено: НЕВЗВЕШЕННОЕ число наблюдений = " _
		   &DtDoc.GetNumberOfCases &". Нажмите ОК для подсчёта взвешенного числа.", 1) = 2 _
		   Then Exit Sub
		
		Set OutDoc = objSpssApp.NewOutputDoc
		OutDoc.Visible = True
		Cmd = "WEIGHT OFF." & vbCr
		Cmd = Cmd &"FILTER OFF." & vbCr
		Cmd = Cmd &"DESCRIPTIVES " & WeightName & "/STATISTICS=SUM." &vbCr
		Cmd = Cmd &"WEIGHT BY " & WeightName &"."&vbCr
		objSpssApp.ExecuteCommands Cmd, False
	End If
End Sub