При работе с базой данных Microsoft Access у Вас постепенно будет расти размер базы данных. Это связано с тем, что, удаляя элементы или записи «физически» из базы они не удаляются, уничтожаются только ссылки. Для уменьшения размера базы данных, напишем программу для сжатия ее файла. В качестве имени файла, передаваемого в программу, введем переменную StrMDB.
Public Function funCompactDatabase(strMDB As String) As Boolean
Dim tmpMDB As String, fs, sFullPath As String
On Error GoTo 999 'Назначаем переход по ошибке
funCompactDatabase = False 'Возвращаем результат при ошибке
sFullPath = appFolder & "\" & strMDB 'Устанавливаем полное имя файла
Set fs = CreateObject("Scripting.FileSystemObject") 'Создаем файловую систему
tmpMDB = fs.GetTempName 'Получаем временный файл
DBEngine.CompactDatabase sFullPath, tmpMDB, dbLangCyrillic 'Сжимаем базу данных
fs.CopyFile tmpMDB, sFullPath, True 'Переписываем файл
Kill tmpMDB 'Удаляем временный файл
Set fs = Nothing 'Уничтожаем объект файловой системы
funCompactDatabase = True 'Возвращаем результат
Exit Function 'Выходим из программы
999:
MsgBox Err.Description 'Сообщаем об ошибке
Err.Clear 'Очищаем поток от ошибок
End Function