'Экспорт словаря (метаданных) SPSS в текстовый файл. 'Скрипт позволяет экспортировать всю информацию из словаря открытого файла данных SPSS 'в текстовые файлы. 'ТРЕБОВАНИЯ: Файл данных SPSS должен быть открыт в редакторе данных ' 'НАЗНАЧЕНИЕ: 'После использования данного скрипта созданные текстовые файлы вы можете импортировать в 'MS Access или MS Excel. 'Вы можете создать базу данных ваших переменных и их форматов в Access. Это особенно полезно, 'если у вас большие файлы со множеством переменных. Можно создавать специальные отчёты/списки 'переменных по установленному формату (например, кодировочные таблицы). ' 'АВТОРЫ: 'Имя: Jean-Francois Allaire, Исследовательский центр Philippe Pinel Монреаля 'E-Mail: jfallaire@ssss.gouv.qc.ca 'Скрипт объединяет и развивает скрипты, перечисленные ниже. 'Скрипт: Экспорт переменных и меток значений в текстовые файлы.SBS (прислал для публикации на сайте spsstools Wouter Egberink) 'Скрипт: Экспорт имён и меток значений в текстовый файл.SBS (Raynald Levesque) 'Скрипт: Отобразить число переменных и наблюдений в файле данных.SBS (Raynald Levesque) ' 'ДАТА: 18.07.2002 'Перевод: А. Балабанов, 09.11.2008 'Проверено: SPSS 13.0. ' 'РЕЗУЛЬТАТ: Словарь данных сохраняется в 4 текстовых файлах в папке 'C:\\'. См. ниже ' описание каждого из файлов. Поля в текстовых файлах разделяются символом ";". ' 'ОПИСАНИЕ ТЕКСТОВЫХ ФАЙЛОВ (ПОЛЯ): ' 'Файл:Fileinfo.txt ' ИмяФайлаSPSS ; ЧислоНаблюдений ; ЧислоПеременных ' 'Файл:valuelabel.txt ' ИмяПеременной ; Значение ; МеткаЗначения; ' 'Файл:variablesinfo.txt ' ИмяФайлаSPSS ; ПорядковыйНомерПеременной ; ИмяПеременной ; МеткаПеременной ; ТипПеременной ; ШиринаПеременной ; ШиринаДробнойЧасти ; ' ЧислоОпределённыхПропущенныхЗначений ; ПропущенноеЗначение1 ; ПропущенноеЗначение2 ; ПропущенноеЗначение3 ' 'Файл:Dictionary.txt ' ИмяФайлаSPSS ; ПорядковыйНомерПеременной ; ИмяПеременной ; МеткаПеременной ; ТипПеременной ; ШиринаПеременной ; ШиринаДробнойЧасти ; ' ЧислоОпределённыхПропущенныхЗначений ; ПропущенноеЗначение1 ; ПропущенноеЗначение2 ; ПропущенноеЗначение3 ; Значение1 ; МеткаЗначения1 ; Значение2 ; МеткаЗначения2; ' Значение3 ; МеткаЗначения3 ; и т.д... ' 'Возвращаемые значения для формата переменных: '1 SpssPrintFormatA '2 SpssPrintFormatAhex '3 SpssPrintFormatComma '4 SpssPrintFormatDollar '5 SpssPrintFormatF '6 SpssPrintFormatIb '7 SpssPrintFormatPibhex '8 SpssPrintFormatP '9 SpssPrintFormatPib '10 SpssPrintFormatPk '11 SpssPrintFormatRb '12 SpssPrintFormatRbhex '15 SpssPrintFormatZ '16 SpssPrintFormatN '17 SpssPrintFormatE '20 SpssPrintFormatDate '21 SpssPrintFormatTime '22 SpssPrintFormatDatetime '22 SpssPrintFormatDatetime '23 SpssPrintFormatAdate '24 SpssPrintFormatJdate '25 SpssPrintFormatDtime '26 SpssPrintFormatWkday '27 SpssPrintFormatMonth '28 SpssPrintFormatMoyr '29 SpssPrintFormatQyr '30 SpssPrintFormatWkyr '31 SpssPrintFormatPct '32 SpssPrintFormatDot '33 SpssPrintFormatCca '34 SpssPrintFormatCcb '35 SpssPrintFormatCcc '36 SpssPrintFormatCcd '37 SpssPrintFormatCce '38 SpssPrintFormatEdate '39 SpssPrintFormatSdate '***************************************************************************** Option Explicit Sub Main Dim objSPSSInfo As ISpssInfo,ValueLabels() Dim objDataDoc As ISpssDataDoc Dim LongValString As String, K As Long,I As Long,J As Long Dim NumVars As Long 'Число переменных Dim VarName As String 'Имя переменной Dim VarLabel As String 'Метка переменной Dim NumVals As Long 'Число меток значений Dim ValName As String 'Значение Dim ValLabel As String 'Метка значения Dim strDataName As String 'Имя файла данных Dim lngNumCases As Long 'Число наблюдений Dim vrtVarType As Variant 'Тип переменной Dim vrtVarWidth As Variant 'Ширина переменной Dim vrtVarFract As Variant 'Ширина дробной части переменной Dim vrtMissingCounts As Variant 'Число определённых пропущенных значений Dim vrtMissingValues As Variant 'Определённые пропущенные значения Set objSPSSInfo = objSpssApp.SpssInfo Set objDataDoc = objSpssApp.Documents.GetDataDoc(0) strDataName = objDataDoc.GetBannerText 'Имя файла данных lngNumCases = objDataDoc.GetNumberOfCases 'Число наблюдений objDataDoc.GetVariableFormats(vrtVarType, vrtVarWidth, vrtVarFract) 'Формат переменной objDataDoc.GetVariableMissingValues(vrtMissingCounts, vrtMissingValues) 'Пропущенные значения Open "C:\\temp\\variablesinfo.txt" For Output As #1 Open "C:\\temp\\valuelabel.txt" For Output As #2 Open "C:\\temp\\Dictionary.txt" For Output As #3 Open "C:\\temp\\Fileinfo.txt" For Output As #4 NumVars=objSPSSInfo.NumVariables-1 'Вывод информации о файле Print #4, strDataName & ";" & lngNumCases & ";" & NumVars+1 For I=0 To NumVars VarName= objSPSSInfo.VariableAt(I) VarLabel= objSPSSInfo.VariableLabelAt(I) If Len(VarLabel)=0 Then VarLabel=VarName End If 'Вывод информации о переменной Print #1, strDataName & ";" & I+1 & ";" & VarName & ";" & VarLabel & ";" & vrtVarType(I) & ";" & vrtVarWidth(I) & ";" & vrtVarFract(I)& ";" & vrtMissingCounts(I) & ";" & vrtMissingValues(I, 0) & ";" & vrtMissingValues(I, 1) & ";" & vrtMissingValues(I, 2) LongValString = CStr(strDataName) & ";" & CStr(I+1) & ";" & CStr(VarName) & ";" & CStr(VarLabel) & ";" & CStr(vrtVarType(I)) & ";" & CStr(vrtVarWidth(I)) & ";" & CStr(vrtVarFract(I)) & ";" & CStr(vrtMissingCounts(I)) & ";" & CStr(vrtMissingValues(I,0)) & ";" & CStr(vrtMissingValues(I,1)) & ";" & CStr(vrtMissingValues(I,2)) NumVals= objSPSSInfo.NumberOfValueLabels(I)-1 For K=0 To NumVals ValName= objSPSSInfo.ValueAt(I,K) ValLabel= objSPSSInfo.ValueLabelAt(I,K) If Len(ValLabel)=0 Then ValLabel=ValName End If 'Вывод информации о метках значений Print #2, VarName & ";" & ValName & ";" & ValLabel LongValString = LongValString & ";" & CStr(ValName) & ";" & CStr(ValLabel) Next K 'Вывод полной информации о словаре Print #3, LongValString Next I Set objSPSSInfo = Nothing Close #1 Close #2 Close #3 Close #4 End Sub