Экспорт всех сводных таблиц из всех файлов 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 | 'Описание ' Экспорт сводных таблиц (Pivot Tables) и/или графиков из файлов spo в заданной папке по заданной маске в файлы HTM ' Скрипт обрабатывает все файлы по заданной маске, например, "*.spo", "out*.spo", ' в указанной папке. ' Допустим, первые 2 файла называются "output1.spo" и "myoutput.spo". ' Тогда будет открыт файл "output1.spo", и все сводные таблицы и/или графики будут выделены ' и экспортированы в HTM-файл с именем "output1.htm". ' Аналогично, все таблицы из "myoutput.spo" будут экспортированы в "myoutput.htm". 'Конец описания ' Размещено в SPSSX-L 15.09.2001, автор: rlevesque@videotron.ca ' http://www.spsstools.net Option Explicit ' Исправьте следующие 2 строки так, как вам нужно Const bolTABLE = True 'True означает экспорт всех объектов такого типа Const bolCHART = True 'False означает "не экспортировать" 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 'Определим путь к файлам и маску strPath ="c:\\temp\\" strFileMask ="*.spo" 'Получаем имя первого файла результатов strFname = Dir$(strPath & strFileMask) Set objDocuments = objSpssApp.Documents While strFname <> "" ' Debug.Print strFname ' Открываем Output, делаем его видимым, выделяем все сводные таблицы: Set objOutputDoc = objSpssApp.OpenOutputDoc(strPath & strFname) objOutputDoc.Visible = True Call SelectItems(objOutputDoc) Call ExportPivotTablesToHTML(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 Set objOutputDoc = Nothing End Sub '**************************** Sub ExportPivotTablesToHTML ( _ 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 'График If bolCHART = True Then objItem.Selected = True Else objItem.Selected = False End If Case 5 'Сводная таблица If bolTABLE=True Then objItem.Selected = True Else objItem.Selected = False End If Case Else objItem.Selected = False End Select Next End Sub |