' Определение для каждой переменной макроса, который содержит метку этой переменной
' Автор: Raynald Levesque, 21.06.2000, rlevesque@videotron.ca
' Условия : в редакторе данных открыт набор данных
' Результаты : для каждой переменной, чьё имя включает до 8 символов, создаётся макрос с именем,
' состоящим из знака "!" и имени самой переменной (например, для
' переменной qtop1 макрос будет именоваться как !qtop1)
' Выполнение макроса !qtop1 будет эквивалентно подставлению в соответствующее
' место синтаксиса метки переменной qtop1.
' Инструкции : Выполните этот скрипт, после чего добавьте в начало вашего файла синтаксиса
' следующую строку (возможно, потребуется изменить путь):
' INCLUDE "c:\\temp\\variable label macro.sps"
' Этим вы загрузите соответствующие макросы в память SPSS, они будут готовы к исполнению.
' Эта возможность удобна, например, для распечатки меток переменных в
' заголовках (см. подкоманды TITLE) таблиц или графиков.
'Желательные усовершенствования: при формировании макроса для переменных с именами в 8 символов скрипт
'должен заменять на символ "!" первый или последний символ имени (по выбору пользователя).
' Для современных версий SPSS желательным является усовершенствование по работе с именами, длиннее, чем 8 символов - примеч. перев.
' Перевод: А. Балабанов, 14.11.2008.
' Проверено: SPSS 15.0.0.
Option Explicit
Sub Main
Dim objSPSSInfo As ISpssInfo,ValueLabels()
Dim NumVars As Long,I As Long,J As Long, VarName As String, VarLabel As String
Set objSPSSInfo = objSpssApp.SpssInfo
NumVars=objSPSSInfo.NumVariables-1
Open "c:\\temp\\variable label macro.sps" For Output As #1
For I=0 To NumVars
VarName= objSPSSInfo.VariableAt(I)
If Len(VarName)<8 Then
VarLabel= objSPSSInfo.VariableLabelAt(I)
If Len(varlabel)=0 Then
varlabel=varname
End If
Print #1, "DEFINE !" & Varname & "() " & VarLabel & " !ENDDEFINE."
End If
Next I
Close #1
End Sub