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
'Begin Description 
'Скрипт сохраняет файл из окна выдачи (Viewer) в директорию SPSS с переданным в скрипт в
'качестве параметра именем файла.
'Данный скрипт демонстрирует совместную работу синтаксиса и скрипта (синтаксис передаёт
'скрипту нужный параметр при вызове последнего командой SCRIPT). Откройте синтаксис SaveClose.sps
'и запустите его.
'Условия: скрипт должен быть запущен из синтаксиса 'SaveClose.sps':
'SCRIPT file="c:\\program files\\spss\\scripts\\SaveCurrentOutputWindows-CalledFromSyntax.sbs" /("SaveClose.spo") .
'Источник: SPSSSNet 100006745

'Перевод: А. Балабанов, 19.11.2008.
'Проверено: SPSS 13.0.
Option Explicit 

Sub Main 
'можно контролировать число открытых окон результатов (установить максимально допустимое количество)
'Const MAX_WINDOWS As Integer = 10 
'Назначение: сохранение текущего окна результатов и создание нового окна результатов.
Dim objOutputDoc As ISpssOutputDoc 
Dim strParam As String 

Dim i As Integer 
Dim objDocuments As ISpssDocuments 

Set objDocuments = objSpssApp.Documents 

strParam = objSpssApp.ScriptParameter(0) 
If objDocuments.OutputDocCount > 0 And strParam <> "" Then 
Set objOutputDoc = objSpssApp.GetDesignatedOutputDoc 
'Снимите символ комментария (') со следующей строки чтобы распечатать файл выдачи:
'objOutputDoc.PrintDoc 
'Проверка, указал ли пользователь не только имя, но и путь к файлу
If InStr(strParam, "\\") > 0 Then 
	objOutputDoc.SaveAs strParam
Else 'если путь не указан, сохраняем в директорию SPSS
	objOutputDoc.SaveAs objSpssApp.GetSPSSPath & strParam
End If 
End If 

'создание нового окна результатов и отображение его на экране
	'objSpssApp.NewOutputDoc.Visible = True
'...либо просто создание нового окна результатов без показа его (например, для Production Mode - производственного режима SPSS)
	objSpssApp.NewOutputDoc
'...и закрываем старые окна результатов...
'...но только если они не являются окнами назначения (designated),
'можно закрывать только в том случае, если достигнут допустимый предел по количеству окон (MAX_WINDOWS)
'If objDocuments.OutputDocCount < MAX_WINDOWS Then Exit Sub 
For i = objDocuments.OutputDocCount - 1 To 0 Step -1 
Set objOutputDoc = objDocuments.GetOutputDoc(i) 
If Not objOutputDoc.Designated Then 
objOutputDoc.Close 
End If 
Next 
End Sub