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
' Скрипт показывает текущий тип выдачи SPSS: обычный (объектный) Output с мобильными таблицами,
' или текстовый Output (Draft Output) и переключает по запросу пользователя тип выдачи на
' противоположный.
'
'  Переключение типа выдачи:
'  Если к моменту переключения в сессии SPSS нет открытых обычного или текстового окон выдачи,
'  скрипт создаёт, соответсвенно, новый документ для обычной или текстовой выдачи. Если нужные
'  окна уже имеются, активным окном выдачи становится последний из открытых окон выдачи среди,
'  соответственно, обычных или текстовых окон.

'  Если вы "прицепите" этот скрипт к одной из кнопок на панели инструментов окна синтаксиса SPSS, у вас будет
'  возможность легко перенаправлять выдачу одним нажатием этой кнопки, не покидая окна синтаксиса.

' Скрипт протестирован в версии SPSS 10.1.4.
' Автор: Karel Asselberghs, asselberghs@dds.nl

Sub Main
  Dim objSPSSOptions As ISpssOptions
  Dim objDocuments As ISpssDocuments
  Dim objOutputDoc As ISpssOutputDoc
  Dim objDraftDoc As ISpssDraftDoc
  Dim count As Integer
  Dim OutputType As Integer

  Set objSPSSOptions = objSpssApp.Options
  Set objDocuments = objSpssApp.Documents
  OutputType = objSPSSOptions.CurrentOutputType

  If  OutputType = 0  Then
    If MsgBox("Переключить вывод в текстовое окно?",vbOkCancel,"Обычное окно результатов") <> vbOK Then
      Exit All
    End If
  Else
    If MsgBox("Переключить вывод в обычное окно?",vbOkCancel,"Текстовое окно результатов") <> vbOK Then
      Exit All
    End If
  End If

  If OutputType = 0 Then                     ' если текущая выдача - обычная
    count = objDocuments.DraftDocCount
    If count = 0 Then
      objSPSSOptions.CurrentOutputType = 1
      Set objDraftDoc=objDocuments.GetDraftDoc(0)
      objDraftDoc.Visible=True
    Else
      Set objDraftDoc = objDocuments.GetDraftDoc(count-1)
      objDraftDoc.Designated = True
    End If
  Else                                       ' если текущая выдача - текстовая
    count = objDocuments.OutputDocCount
    If count = 0 Then
      objSPSSOptions.CurrentOutputType = 0
      Set objOutputDoc=objDocuments.GetOutputDoc(0)
      objOutputDoc.Visible=True
    Else
      Set objOutputDoc = objDocuments.GetOutputDoc(count-1)
      objOutputDoc.Designated = True
    End If
  End If

  If OutputType = 1 And objSPSSOptions.CurrentOutputType = 1  Then
    MsgBox "Не удалось переключить вывод в обычное окно",,"Текстовое окно результатов"
  ElseIf OutputType = 0 And objSPSSOptions.CurrentOutputType = 0 Then
    MsgBox "Не удалось переключить вывод в текстовое окно",,"Обычное окно результатов"
  End If
End Sub