Файл: RepToExcel.vbs 
' Собрал: Орлов В.И. ' цшдшфьы"нфтвучюкг ' icq:5279603 ' Изменен:02.04.2012 Option Explicit Dim flag, ext, MyDir, FSO, Files, strFiles, ExcelFile, File, strFile, arrFiles, objExcel, objWorkBook Dim titAdd, lists, ExistLists, i, NoExistLists, ThisList ext = "log" 'расширение отчетфайлов MyDir = "\\domen\shara\Inventary" ' Наша директория Set FSO = CreateObject("Scripting.FileSystemObject") Set Files = FSO.GetFolder(MyDir).Files ' Список файлов в нашей директории strFiles = "" ' Список фалов без разширением в строковом виде ExcelFile = MyDir & "\" & "inventary.xlsx" ' Наш эксель файл Dim arrTitle(15) ' Поля сводной таблицы "ИТОГИ" arrTitle(0) = trim("Дата инвентаризации ") arrTitle(1) = trim("Компьютер ") arrTitle(2) = trim("Описание ПК ") arrTitle(3) = trim("Модель компа ") arrTitle(4) = trim("Процессор ") arrTitle(5) = trim("Производитель корпуса ") arrTitle(6) = trim("Серийник с корпуса ") arrTitle(7) = trim("Серийник из биос ") arrTitle(8) = trim("Общий размер памяти в байтах") arrTitle(9) = trim("Операционка ") arrTitle(10) = trim("Организация ПК ") arrTitle(11) = trim("Организация пользователя ") arrTitle(12) = trim("SerialNumber ") arrTitle(13) = trim("наименование CD-ROM ") arrTitle(14) = trim("Производитель биос ") arrTitle(15) = trim("Ключ Windows ") For Each File In Files if right(File.Name, len(ext)) = ext then strFiles = strFiles & File.Name & vbNewLine end if Next arrFiles = split(strFiles, "." & ext & vbNewLine) ' Список фалов без разширения в массиве ' On Error resume next Set objExcel = CreateObject("Excel.Application") ' объект эксель objExcel.Application.DisplayAlerts = False objExcel.Visible = True ' Отобразить эксель if FSO.FileExists(ExcelFile) then ' Открываем эксель файл objExcel.Workbooks.Open (ExcelFile) ' Открываем наш файл эксель else ' Создаем эксель файл objExcel.SheetsInNewWorkbook = 1 ' один пока лист при создании Set objWorkbook = objExcel.Workbooks.Add() ' Создали книгу objWorkbook.Sheets(1).name = "ИТОГИ" objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("A1").Formula = "=COUNTA(A2:A30000)" ' Поставили счетчик добавленных компов for titadd=0 to ubound(arrTitle) ' добавляем заголовки сводной таблицы objExcel.ActiveWorkbook.Sheets("ИТОГИ").cells(1,titadd+2).value = arrTitle(titadd) next objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("B2").Select With objExcel.ActiveWindow ' Зкрепляем азголовок таблицы .SplitColumn = 1 .SplitRow = 1 .FreezePanes = True End With 'objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("A:A").ColumnWidth = 0 ' Прячем первый столбец objExcel.ActiveWorkbook.SaveAs ExcelFile ' Сохранили с нашим именем в нашем месте end if lists = objExcel.ActiveWorkbook.Sheets.count ' Количество листов ExistLists = "СпискЛистов " for i = 1 to lists ExistLists = ExistLists & " " & objExcel.ActiveWorkbook.Sheets(i).name next NoExistLists = "" for i = 0 to ubound(arrFiles) ' Собираем список файлов отсутствующих в книге if instr(lcase(ExistLists), lcase(arrFiles(i))) < 1 then NoExistLists = NoExistLists & arrFiles(i) & vbNewLine end if next NoExistLists = split(NoExistLists, vbNewLine) for i = 0 to ubound(NoExistLists)-1 ' Добавляем недостающие листы и инфу в них Set ThisList = objExcel.ActiveWorkbook.Sheets.Add ThisList.Name = NoExistLists(i) '------------------------------ ГИПЕРССЫЛКИ ----------------------------------- ' add ' Ячейка куда вставить гипессылку, _ ' Файл из которого открыть, _ ' TextToDisplay, _ ' Подсказка objExcel.ActiveWorkbook.Sheets("ИТОГИ").Hyperlinks.Add _ objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("A" & objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("A1").value+2), _ "", _ "'" & NoExistLists(i) & "'" & "!A1", _ NoExistLists(i) objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("A" & objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("A1").value+1).Hyperlinks(1).TextToDisplay = NoExistLists(i) objExcel.ActiveWorkbook.Sheets(NoExistLists(i)).Hyperlinks.Add _ objExcel.ActiveWorkbook.Sheets(NoExistLists(i)).Range("A1"), _ "", _ "'ИТОГИ'" & "!A1", _ "Дата инвентаризации" objExcel.ActiveWorkbook.Sheets(NoExistLists(i)).Range("A1").Hyperlinks(1).TextToDisplay = "Дата инвентаризации" '------------------------------ ГИПЕРССЫЛКИ ----------------------------------- AddInfo(ThisList) next if NOT objExcel.ActiveWorkbook.Sheets(1).name = "ИТОГИ" then ' Если первый лист не ИТОГИ objExcel.ActiveWorkbook.Sheets("ИТОГИ").Move , objExcel.ActiveWorkbook.Sheets(1) ' Делаем ИТОГИ первым листом objExcel.ActiveWorkbook.Sheets(1).Move , objExcel.ActiveWorkbook.Sheets(2) end if objExcel.ActiveWorkbook.Sheets("ИТОГИ").select ' Выбираем лист ИТОГИ и добавляем формулу objExcel.Range("B2:Q" & objExcel.ActiveWorkbook.Sheets("ИТОГИ").Range("A1").value+1).Formula = "=IF(INDIRECT(CONCATENATE(""$A$"",ROW()))<>"""",INDIRECT(CONCATENATE(""'"",INDIRECT(CONCATENATE(""$A$"",ROW())),""'!B"",COLUMN()-1)),"""")" WScript.CreateObject("WScript.Shell").popup "Завершили сбор инфы из логов !", 5, "КАНЕС.", vbInformation objExcel.ActiveWorkbook.Save ' objExcel.ActiveWorkbook.close ' objExcel.Quit objExcel.Application.DisplayAlerts = True set objExcel = nothing function AddInfo(list) dim file, ContentFile, ncell, iarrt file = MyDir & "\" & list.Name & ".log" ContentFile = split(CreateObject("Scripting.FileSystemObject").OpenTextFile(file, 1).ReadAll, vbNewLine) With list for ncell=0 to ubound(ContentFile) for iarrt = 0 to ubound(arrTitle) insertTo iarrt+1, arrTitle(iarrt), ContentFile(ncell), list next if inStr(ContentFile(ncell), " -#- ") > 0 then .cells(ncell+1+16,1).value = split(ContentFile(ncell), " -#- ")(1) .cells(ncell+1+16,2).value = split(ContentFile(ncell), " -#- ")(0) else .cells(ncell+1+16,1).value = ContentFile(ncell) end if next End With end function function insertTo(num,strFnd,Contnt, list) if instr(Contnt, trim(strFnd)) > 0 and inStr(Contnt, " -#- ") > 0 then list.cells(num,1).value = trim(strFnd) list.cells(num,2).value = trim(split(Contnt, " -#- ")(0)) end if end function
Оставить запись с благодарностью..
В начало.
Hosted by uCoz