'Решение SPSS AnswerNet 100006374 'Продукт: SPSS Base 'Версия: 8.0 'Тема: 'Скрытие столбца (например, "Frequency") в мобильной таблице 'Описание: 'Вопрос. 'Я использую SPSS 8.0 для Windows. В работе мне часто приходится строить частотные таблицы, но столбец '"Frequency" мне совершенно не нужен. Можете ли вы предложить какой-то скрипт, который бы скрывал этот столбец? 'Ответ. 'Ниже предложена процедура HideColumnLabelColumn. Она ищет в метках столбцов заданную текстовую строку '(например, "Frequency"). Когда находится столбец с такой меткой, процедура устанавливает его ширину 'в один пункт, что делает данный столбец скрытым. 'Для того, чтобы вызвать процедуру HideColumn из автоскрипта: 'Добавьте процедуру в файла автоскрипта (Autoscript.sbs, по умолчанию (можно в конец файла, например). 'Постройте типовую таблицу ("Frequencies", например), щёлкните на ней правой кнопкой мыши, выберите '"Create/Edit Autoscript", и в процедуру, где окажется курсор, добавьте следующий код, например: 'Dim objPivot As PivotTable 'Set objPivot = objTable 'HideColumn objPivot, "Frequency" 'После этого проверьте настройку параметров в меню Edit->Options, вкладка Script. Убедитесь, что 'напротив имени отредактированной процедуры стоит галочка. 'Размещение: http://www.spsstools.ru/Scripts/PivotTables/HideAColumnInPivotTable.txt (.sbs). 'Перевод: А. Балабанов, 31.12.2008. 'Проверено: SPSS 15.0.0. 'Вот как может выглядеть модифицированная процедура в файле автоскрипта: _______________________________________________________ Sub Frequencies_Table_Frequencies_Create(objTable As Object, _ objOutputDoc As Object, lngIndex As Long) 'Автоскрипт 'Запускающее событие: создание таблицы частот после выполнения команды Frequencies. 'Действия: проходит по меткам строк, находит метку "Total", и выделяет метку "Total" и 'соответствующую строку данных жирным шрифтом Dim bolSelection As Boolean Call SelectRowLabelsAndData(objTable, cTOTAL, bolSelection) If bolSelection = True Then objTable.TextStyle = 2 'полужирный шрифт End If '--- эта часто добавлена нами для того, чтобы скрывать колонку с пометкой "Frequency" --- Dim objPivot As PivotTable Set objPivot = objTable HideColumn objPivot, "Frequency" End Sub '_______________________________________________________ 'Далее приводятся примеры использования процедуры HideColumn как самостоятельного скрипта 'и как процедуры в автоскрипте. При вызове этой процедуры из другой процедуры можно осуществить 'вызов, например, ко всем таблицам в окне результатов и т.д. 'См. другие решения на http://support.spss.com/Tech/default.asp '_______________________________________________________ '********** Пример использования процедуры HideColumn в качестве самостоятельного скрипта ********** '--- Сохраните процедуру, приведённую ниже в файле "HideColumn.SBS" ' Выделите нужную сводную таблицу и запустите скрипт "HideColumn.SBS" Sub Main Dim objPivot As PivotTable Dim objItem As ISpssItem Dim bolFoundOutput As Boolean, bolFoundPivot As Boolean GetFirstSelectedPivot objPivot, objItem, _ bolFoundOutput, bolFoundPivot If Not (bolFoundOutput And bolFoundPivot) Then Exit Sub End If HideColumn objPivot, "Frequency" objItem.Deactivate End Sub '********** Для использования решения в качестве автоскрипта ********** '--- вставьте весь код, расположенный ниже, в конец файла Autoscript.sbs --- 'Процедура HideColumn осуществляет поиск запрошенной метки и скрывает колонку с найденной меткой. 'Вызов HideColumn осуществляется из другой процедуры. Sub HideColumn (objPivot As PivotTable, strLabel As String) Dim objColLabels As ISpssLabels Dim i As Integer, j As Integer Set objColLabels = objPivot.ColumnLabelArray With objColLabels For i = .NumRows - 1 To 0 Step -1 For j = 0 To .NumColumns - 1 If Not IsNull(.ValueAt(i,j)) Then If .ValueAt(i,j) = strLabel Then objPivot.UpdateScreen = False 'делаем ширину колонки равной 1, чтобы скрыть её .ColumnLabelWidthAt(i,j) = 1 objPivot.UpdateScreen = True 'Exit Sub End If End If Next Next End With End Sub