Определить пользовательские заголовки
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | '(Вопрос) Возможно ли через синтаксис как-то указывать заголовки для процедуры CROSSTABS? ' Мне еженедельно приходится строить множество таблиц, и мне не очень удобно всякий раз вручную ' переписывать заголовки. '(Ответ) Я написал скрипт и макрос для модификации заголовков в выдаче. ' Скрипт называется 'title.sbs', а макрос - 'title.sps'. Оба файла должны находиться ' в одной и той же директории (<pathname>). Вы можете получить нужное название с помощью ' следующего синтаксиса: include '<pathname>\\title.sps'. CROSSTABS что-то BY что-то ещё. settitle Это нужный заголовок. dotitle. CROSSTABS blabla1 BY blabla2. settitle Это другой заголовок. dotitle. 'Размещено: http://www.spsstools.ru/Scripts/PivotTables/DefineCustomizedCrosstabTitles.txt (.sbs). 'Перевод: А. Балабанов, 30.12.2008. 'Проверено: SPSS 15.0.0. 'Скрипт рассчитан на то, что в настройках SPSS отключено эхо командного синтаксиса в окно результатов, т.е. 'подразумевается, что текстовый блок, следующий за построенной таблицей, содержит лишь желаемый заголовок, 'напечатанный командой PRINT. В SPSS 15.0.0. наблюдаются проблемы при попытке использования кириллических 'символов в заголовке (вместо кириллических символов вставляются пробелы) - примеч. перев. 'Скрипт подвержен проблемам, связанным с асинхронностью, так что полезно переписать его таким образом, чтобы 'он анализировал всё окно результатов, и запускать его после окончания всех расчётов - примеч. перев. Скрипт (сохраните как <pathname>\\title.sbs): ============================================================== Sub Main() Dim objOutputDoc As ISpssOutputDoc Dim objItems As ISpssItems Dim objItem As ISpssItem Dim myindex As Long Dim lab As String Dim objSPSSText As ISpssrtf Dim mytitle As String Set objOutputDoc = objSpssApp.GetDesignatedOutputDoc Set objItems = objOutputDoc.Items() myindex=objItems.Count Set objItem = objItems.GetItem(myindex-1) Set objSPSSText =objItem.ActivateText mytitle=objSPSSText.Text objItem.Deactivate Do myindex=myindex-1 Set objItem = objItems.GetItem(myindex) lab=objItem.Label Loop Until lab="Title" objItem.Label=mytitle Set objSPSSText =objItem.ActivateText objSPSSText.Text=mytitle objItem.Deactivate objItem.Selected=False Set objItem = objItems.GetItem(objItems.Count-1) objItem.Selected=True objOutputDoc.Remove End Sub ============================================================== Макрос (<pathname>\\title.sps): ============================================================== define settitle (!POSITIONAL !CMDEND). Do If $CASENUM EQ 1. Print /!quote(!1). End If. Execute. !ENDDEFINE. define dotitle(). script '<укажите здесь путь к файлу>\\title.sbs' . !ENDDEFINE. ============================================================== Надеюсь, это поможет. Oliver Loch ---------------------------------------------------------------------------- Dipl. Stat. Oliver Loch German AIDS Study Group Phone: +49 89 5160 3457 Med. Poliklinik der LMU Fax: +49 89 5160 3593 Pettenkoferstr. 8a e-mail: loch@pk-i.med.uni-muenchen.de D-80336 Muenchen ---------------------------------------------------------------------------- |
Related pages
...