Автоматизация отладки
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 98 99 100 101 102 103 104 105 106 107 | Sub Main 'Begin Description 'Когда вы разрабатываете автоскрипт, порой, весьма утомительно вновь и вновь генерировать 'таблицу, с которой вы хотите связать выполнение автоскрипта. Используйте этот скрипт для 'моделирования ситуации возникновения таблицы, вызывающей скрипт. Просто выделите нужную таблицу в 'Output и запустите этот скрипт. Поведение будет таким же, как в реальной ситуации вызова автоскрипта, 'ассоциированного с этой таблицей. Поместите свой код, который хотите отладить, в раздел, отмеченный 'звёздочками * ниже. Запускайте этот скрипт так часто, как потребуется. После окончания отладки, 'используйте меню Create/Edit autoscript, и вставляйте отлаженный код из раздела, отмеченного 'звёздочками, в процедуру вашего автоскрипта. 'End Description 'ДАННУЮ ЧАСТЬ ИЗМЕНЯТЬ НЕ СЛЕДУЕТ 'вот 3 переменные, который использует автоскрипт при активизации Dim objPivotTable As Object Dim objOutputDoc As Object Dim lngIndex As Long Dim objItem As ISpssItem 'это просто для того, чтобы мы смогли деактивировать таблицу потом Dim bolFoundPivot As Boolean If Not GetFirstSelectedPivotForAutoscript(objPivotTable, objOutputDoc, lngIndex, objItem) Then Exit Sub End If '********************************************************************** 'Всё будет происходить как будто был вызван автоскрипт, описанный в следующей некоторой процедуре EXPERIMENT: 'Sub EXPERIMENT(objPivotTable As Object, objOutputDoc As Object, lngIndex As Long) 'Вырезайте всё, что ниже следующей строки до следующих звёздочек и вставляйте ваш автоскрипт. '********************************************************************** 'тривиальный пример для демонстрации работы. Dim strReport As String strReport = "Номер выделенного объекта: " & lngIndex & vbCrLf strReport = strReport & "Заголовок таблицы: " & objPivotTable.TitleText MsgBox strReport, vbInformation, "Автоскрипт Experiment" '********************************************************************** 'Вырезайте всё, что выше предыдущей линии до строки звёздочек и вставляйте ваш автоскрипт. '********************************************************************** objItem.Deactivate End Sub Function GetFirstSelectedPivotForAutoscript(objPivotTable As Object, objOutputDoc As Object, lngIndex As Long, objItem As ISpssItem) As Boolean 'Цель: находит первую выделенную сводную таблицу и возвращает объектные переменные, как будто был вызван автоскрипт 'Условия: Сводная таблица в окне результатов выделена 'Эффект: Активирует выделенную сводную таблицу 'Входящие: Объект PivotTable, объект Item, содержащий выделенную PivotTable 'Исходящие: Выделенная PivotTable, объект Output Document, индекс объекта Item, ' объект Item в окне результатов ' Принимает значение True (истина) если всё удачно Dim objDocuments As ISpssDocuments ' документы SPSS. Dim objItems As ISpssItems ' объекты Output Navigator (окна результатов) Dim intItemCount As Integer Dim intItemType As Integer Dim bolSelected As Boolean ' True (истина), если объект выделен. Dim i As Integer 'Получаем перечень документов SPSS. Set objDocuments = objSpssApp.Documents ' Если есть хотя бы одно окно результатов, получаем ссылку на активное окно результатов. If objDocuments.OutputDocCount > 0 Then 'ссылка на активное окно результатов. Set objOutputDoc = objSpssApp.GetDesignatedOutputDoc Else 'если нет окон результатов. MsgBox( "Не найдено окон результатов." ) GetFirstSelectedPivotForAutoscript = False Exit Function End If ' Пока не нашли сводную таблицу (установим заранее флаг) bolFoundPivot = False ' ссылаемся на перечень объектов и узнаём их количество: Set objItems = objOutputDoc.Items intItemCount = objItems.Count ' Ссылаемся на первую выделенную сводную таблицу. For i = 0 To intItemCount - 1 Set objItem = objItems.GetItem(i) intItemType = objItem.SPSSType bolSelected = objItem.Selected If intItemType = SPSSPivot And bolSelected Then Set objPivotTable = objItem.ActivateTable() 'активизируем сводную таблицу. lngIndex = i bolFoundPivot = True ' Нашли сводную таблицу. Exit For ' Заканчиваем цикл. End If Next i If Not bolFoundPivot Then 'Если не выделена ни одна сводная таблица. MsgBox "Выделите сводную таблицу (того типа, который нужен для вашего автоскрипта) перед запуском отладки.", vbExclamation GetFirstSelectedPivotForAutoscript = False Exit Function End If GetFirstSelectedPivotForAutoscript = True End Function |
Related pages
...