'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