'begin description 'Назначение: Обеспечить вызов макроса для каждой метки значения данной переменной. 'Условия: в редакторе данных открыт набор данных, ' папка "c:\\temp" существует. ' В данном примере вызов макроса осуществляется по одному разу для каждой метки значения переменной "mdotco" ' Макрос именуется как !macro и требует для запуска указания 2 параметров: ' cty = значение ' name = метка значения. 'end description 'Автор: Raynald Levesque, 03.06.2004 'Сайт по SPSS: http://www.spsstools.ru ' Перевод: А. Балабанов, 14.11.2008. ' Проверено: SPSS 15.0.0. ' Скрипт не создаёт макрос !macro, он лишь формирует синтаксис для его запуска с отдельными параметрами - примеч. перев. Const cVARNAME As String ="mdotco" Option Explicit Sub Main ' Объявление переменных скрипта и ссылки на объект SpssInfo: Dim objSpssInfo As ISpssInfo Dim i As Integer, j As Integer Dim lngLength As Long Set objSpssInfo = objSpssApp.SpssInfo Open "C:\\temp\\macro calls.sps" For Output As #1 Dim ValCount As Integer With objSpssInfo For i = 0 To .NumVariables - 1 If .VariableAt(i) = cVARNAME Then ' Обработка значений и их меток ValCount = .NumberOfValueLabels(i) If ValCount > 0 Then If .VarType(i) = SpssDataString Then For j = 0 To ValCount - 1 Print #1,"!macro cty='" & .ValueAt(i, j) & "' name='" & .ValueLabelAt (i, j) & "'." Next Else For j = 0 To ValCount-1 Print #1,"!macro cty=" & .ValueAt(i, j) & " name='" & .ValueLabelAt (i, j) & "'." Next End If End If End If Next i End With Close #1 objSpssApp.ExecuteInclude ("c:\\temp\\macro calls.sps",False) Set objSpssInfo = Nothing End Sub