|
Do While Not EOF(FileNum%)
Input #FileNum, txt$
txt$ = LCase(txt$)
Select Case ParseString(txt$, “.”, 2)
Case “frm”: FileType$ = “Форма”
Case “bas”: FileType$ = “Модуль”
Case “vbx”: FileType$ = “Элемент управления”
Case Else: FileType$ = “”
End Select
‘добавить описание компонента в список Files
Call FilesAdd(Files, Project$, FileType$, txt$, txt$)
Loop
End Sub
Private Sub LoadVBP(FileNum%, Project$, Files)
Dim txt$, itm$, FileN$, FileType$
‘ выборка описаний компонентов из VBP-файла (VB4 и выше)
‘ и формирование коллекции Files
Do While Not EOF(FileNum%)
Input #FileNum, txt$
itm$ = ParseString(txt$, “=”, 1)
txt$ = LCase(ParseString(txt$, “=”, 2))
‘ определение имени FileN$ и типа файла FileType$
Select Case itm$
Case “Object”: FileType$ = “Элемент управления”
FileN$ = ParseString(txt$, “;”, 2)
Case “Reference”: FileType$ = “Ссылка”
FileN$ = ParseString(txt$, “#”, 4)
Case “Module”: FileType$ = “Форма”
FileN$ = ParseString(txt$, “;”, 2)
Case “Form”: FileType$ = “Модуль”: FileN$ = txt$
Case Else: FileType$ = “”
End Select
‘добавить описание компонента в список Files
Call FilesAdd(Files, Project$, FileType$, FileN$, txt$)
Loop
End Sub
Sub CreatePivotTable()
‘ Формирование сводной таблицы
‘
‘ Эта процедура создана с помощью режима записи
‘ макрокоманды в ходе работы с Мастером создания
‘ сводных таблиц. В полученном при этом программном коде
‘ мы добавили такие две строки:
Selection.Offset(-1, 0).Select
Selection.CurrentRegion.Select
‘ и изменили аргумент SourceData в этом операторе:
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, _
SourceData:=Selection, TableDestination:=””, _
TableName:=”PivotTable1"
‘ Следующие операторы остались без изменений:
ActiveSheet.PivotTables(“PivotTable1”).AddFields _
RowFields:=Array(“Тип”, “Файл”), ColumnFields:=”Проект”
ActiveSheet.PivotTables(“PivotTable1”). _
PivotFields(“файл”).Orientation = xlDataField
End Sub
Private Sub FilesAdd(Files, Project$, FileType$, FileN$, txt$)
Dim Path$, Filename$
‘ формирование коллекции Files - описаний компонентов
‘
If FileType$ <> “” Then ‘ задан компонент
‘ выделение имени файла из полного
Call FileNameTest(FileN$, Path$, Filename$)
‘ добавить описание компонента (проект, тип, имя
‘ файла) в коллекцию Files
Files.Add Array(Project$, FileType$, Filename$), txt$
End If
End Sub
Мы будем писать код процедур по принципу “сверху-вниз” — классического метода
структурного программирования — от высокого уровня компонентов к более низкому.
Правильность такого подхода уже давно доказана — необходимо думать хотя бы о
коллегах-разработчиках, которые будут потом разбираться в наших программах,
корректировать их или использовать в своих проектах. Но, двигаясь “сверху-вниз”,
нужно всегда помнить о готовых компонентах нижнего уровня, которые будут
составлять в значительной мере основу приложения.
ШАГ 2. Первой напишем процедуру CreateVBProjCrossRef, которая является головной
для всего нашего приложения. Она сначала устанавливает заголовки, которые будут
использоваться в исходной, а потом и в сводной таблицах. Затем она обращается к
функции LoadProjectFile, в которой формируется исходная таблица компонентов
приложений. Если функция возвращает значение True (Истина), то это означает,
что такая таблица была создана хотя бы для одного проекта. В этом случае
|
|