* Макрос для экспорта данных в Excel, если количество переменных превышает 256. *//////////////////////////////. DEFINE !exportToExcel(dataFile=!TOKENS(1) / excelFile=!TOKENS(1) /nbPerSheet=!TOKENS(1) ) !LET !nbPerSheet2=!CONCAT('n',!nbPerSheet) GET FILE=!datafile. N OF CASES 1. FLIP. COMPUTE casen=$CASENUM. COMPUTE nobreak=1. ADD FILES FILE=* /BY=nobreak /LAST=last. COMPUTE m=MOD(casen -1,!nbPerSheet). DO IF last=0. - WRITE OUTFILE='c:\\temp\\var names.txt' /case_lbl. ELSE. - LOOP cnt=m TO !nbPerSheet - 1. - WRITE OUTFILE='c:\\temp\\var names.txt' /case_lbl. - END LOOP. END IF. EXECUTE. DATA LIST FILE='c:\\temp\\var names.txt' FREE /n1 TO !nbPerSheet2 (!nbPerSheet A20). EXECUTE. VECTOR n=n1 TO !nbPerSheet2. STRING theseNames(A50) mysheet(A10). DO IF n1 <> !nbPerSheet2. - COMPUTE theseNames=CONCAT(n1," TO ",!nbpersheet2). ELSE. - COMPUTE theseNames=n1. END IF. COMPUTE mysheet=CONCAT('sheet',LTRIM(STRING($CASENUM,F4))). WRITE OUTFILE='c:\\temp\\save.sps' /"SAVE TRANSLATE " /" /CONNECT='DSN=Excel Files;DBQ=C:\\temp\\myexcel.xls;DriverId=790;MaxBufferSize=2048;PageTimeout=5;' " /" /TABLE='"mysheet "' " /" /TYPE=ODBC" /" /KEEP=" theseNames /" /REPLACE." /"EXECUTE.". EXECUTE. GET FILE=!datafile. INSERT FILE='c:\\temp\\save.sps' . !ENDDEFINE. *//////////////////////////////. !exportToExcel dataFile='c:\\Program files\\spss\\employee data.sav' excelFile='C:\\temp\\myexcel.xls' nbPerSheet=4. * Первый параметр - имя экспортируемого файла данных, второй - имя целевого файла Excel, третий - сколько переменных на один лист Excel следует помещать.