Экспорт целевых объектов из всех файлов spo в файлы HTM
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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | 'Описание 'Экспорт сводных таблиц (Pivot Tables) и/или графиков, в т.ч. интерактивных (IGRAPH) из файлов 'spo в заданной папке по заданной маске в файлы HTM. ' Скрипт обрабатывает все файлы по заданной маске, например, "*.spo", "out*.spo", ' в указанной папке. ' Допустим, первые 2 файла называются "output1.spo" и "myoutput.spo". ' Тогда будет открыт файл "output1.spo", и все сводные таблицы и/или графики будут выделены ' и экспортированы в HTM-файл с именем "output1.htm". ' Аналогично, все таблицы из "myoutput.spo" будут экспортированы в "myoutput.htm". 'Конец описания ' Размещено в SPSSX-L 8.11.2001, автор: rlevesque@videotron.ca ' http://www.spsstools.net Option Explicit ' Целевые объекты (для экспорта в HTML) определяются на основе следующих констант ' Измените следующие 3 строки так, как вам надо Const bolTABLE = True 'True означает экспорт всех объектов такого типа Const bolCHART = True 'False означает "не экспортировать" Const bolIGRAPH = True Sub Main Dim objDocuments As ISpssDocuments Dim objOutputDoc As ISpssOutputDoc Dim strPath As String Dim strFileMask As String Dim strFname As String Dim intCount As Integer Dim i As Integer Dim bolNoFiles As Boolean If MsgBox("NB: Все открытые окна результатов будут закрыты! OK?",vbOkCancel + vbExclamation) _ = vbCancel Then Exit Sub bolNoFiles = True 'Определим путь к файлам и маску strPath ="g:\\temp\\" strFileMask ="out*.spo" 'Получаем имя первого файла результатов strFname = Dir$(strPath & strFileMask) Set objDocuments = objSpssApp.Documents While strFname <> "" ' Debug.Print strFname ' Открываем Output, делаем его видимым Set objOutputDoc = objSpssApp.OpenOutputDoc(strPath & strFname) bolNoFiles = False objOutputDoc.Visible = True ' Выделяем все целевые объекты Call SelectItems(objOutputDoc) Call ExportTargetItemsToHTML(objOutputDoc, strPath, strFname) ' Для экономии памяти закрываем все файлы output, кроме активного (designated) '(использование "objOutputDoc.Close" для активного файла в ранних версиях SPSS "убивает" spsswin.exe!) intCount = objDocuments.OutputDocCount For i = 0 To intCount - 1 Set objOutputDoc = objDocuments.GetOutputDoc(i) If Not objOutputDoc.Designated Then objOutputDoc.Close End If Next 'Переходим к следующему файлу strFname = Dir$() Wend If bolNoFiles=True Then MsgBox("Путь " & strPath & strFileMask & " не содержит ни одного файла",vbOK + vbCritical) Set objOutputDoc = Nothing End Sub '**************************** Sub ExportTargetItemsToHTML ( _ objOutputDoc As ISpssOutputDoc, _ strPath As String, _ strFname As String) '**************************** ' Экспорт выделенных объектов в HTML ' Имя файла HTM такое же, как и у файла SPO Dim strFile As String On Error GoTo ErrorHand ' Определим имя файла HTML strFile = strPath & Left(strFname,InStr(strFname,".")) & "htm" Kill strFile 'Если файл с таким именем уже существует, сотрём его ' Экспорт выделенных объектов в HTML objOutputDoc.ExportDocument (SpssSelected, strFile, SpssFormatHtml, True) Exit Sub ErrorHand: Select Case Err Case 10101 'Файл не может быть удалён Resume Next Case Else Debug.Print Err & " " & Err.Description MsgBox "К сожалению, произошла ошибка! Попробуйте разобраться, в чём дело." Exit Sub End Select End Sub '**************************** ' выделение объектов заданного типа Sub SelectItems(objOutput As ISpssOutputDoc) '**************************** Dim objItems As ISpssItems Dim objItem As ISpssItem Dim lngCount As Long Dim i As Integer Set objItems = objOutput.Items lngCount = objItems.Count ' находим и выделяем объекты заданного типа For i = lngCount - 1 To 0 Step -1 Set objItem = objItems.GetItem(i) Debug.Print objItem.SPSSType Select Case objItem.SPSSType Case 1 'График objItem.Selected = bolCHART Case 5 'Сводная таблица objItem.Selected = bolTABLE Case 10 'Интерактивный график objItem.Selected = bolIGRAPH Case Else objItem.Selected = False End Select Next End Sub |
Related pages
...