'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