рки області файлів
. Range ("F6: U13"). NumberFormat = "0" 'формат числа для області файлів-цілі числа
. ClearArrows 'прибрали всі стрілки
Dim PointerToFile As String
NumberFile = 1
While. Cells (NumberFile + 3, 2) <> "" 'послідовно переглядаємо область файлів. Для кожного файлавиполняется наступна процедура:
NumberCellFAT =. Cells (NumberFile + 3, 4) 'точка входу в FAT N-ного файлу
PointerToFile = "= R" & NumberFile + 3 & "C2" 'Покажчик на клітинку каталогу з ім'ям N-ного файлу
Relation = (. Cells (NumberFile + 3, 3) - 1) Mod 8 'зсув. Являє собою розмір повністю заповненого кластеру
While. Cells (3; NumberCellFAT + 5) <> 0 'перегляд FAT до ознаки кінця ланцюжка
. Range (Cells (6; NumberCellFAT + 5); Cells (6 + 7; NumberCellFAT + 5)). Interior.ColorIndex = ColorUsedPartOfFAT + NumberFile 'виділення кольором чергового неостанніх кластера N-ного файлу
. Range (Cells (6; NumberCellFAT + 5); Cells (6 + 7; NumberCellFAT + 5)). Font.ColorIndex = ColorUsedPartOfFAT + NumberFile
. Range (Cells (6; NumberCellFAT + 5); Cells (6 + 7; NumberCellFAT + 5)). Formula = PointerToFile 'кожна клітинка цього кластеру тепер вказує на комірку з ім'ям файлу в каталозі
NumberCellFAT =. Cells (3; NumberCellFAT + 5) 'взяли наступну комірку FAT з ланцюжка
Wend 'тепер обробка останнього кластера N-ного файлу. Відрізняється тим, що він може бути зайнятий не повністю
. Range (Cells (6; NumberCellFAT + 5); Cells (6 + Relation; NumberCellFAT + 5)). Interior.ColorIndex = ColorUsedPartOfFAT + NumberFile
. Range (Cells (6; NumberCellFAT + 5); Cells (6 + Relation; NumberCellFAT + 5)). Font.ColorIndex = ColorUsedPartOfFAT + NumberFile
. Range (Cells (6; NumberCellFAT + 5); Cells (6 + Relation; NumberCellFAT + 5)). Formula = PointerToFile
В
NumberFile = NumberFile + 1 'працюємо з наступним файлом
Wend
End With
End Sub
Макроси нижнього рівня абстракції
Function FreeSize () As Integer 'Функція для визначення кількості вільного місця в області файлів
FreeSize = 0
temp = 6
While temp <22 'перегляд області FAT
If Sheets ("Sheet"). Cells (3; temp). Value = "" Then _
FreeSize = FreeSize + 8 'якщо комірка FAT порожня, то своб.места в ній 8 байт
temp = temp + 1
Wend
End Function
Function NextFreeCellFAT () As Integer 'Функція повертає номер першого знайденого вільного елемента FAT
NextFreeCellFAT = 1
While NextFreeCellFAT <17
If Sheets ("Sheet"). Cells (3; NextFreeCellFAT + 5). Value = "" Then Exit Function
NextFreeCellFAT = NextFreeCellFAT + 1
Wend
End Function
Sub AddFileToCatalog (File As FileID) 'додавання файлу в область кат...