Для использования подобного кода записи логов необходимо скопировать (перетащив мышкой) модуль класса LogRecorder из прикреплённого файла в ваш файл.
Sub ПримерИспользованияКласса_LogRecorder() ' создаём новый экземпляр лог-рекордера Dim LR As LogRecorder: Set LR = New LogRecorder ' задаём имя файла для лога (указываем полный путь) LR.LogFileFullName = ThisWorkbook.Path & "\common.log" LR.OpenLog ' открываем лог (очистка файла + запись стартовой строки) For i = 1 To 10 ' здесь ваш код ... ' заносим запись в лог LR.AddRecord "Событие " & i, "Информация " & i, 1 If i Mod 3 = 0 Then ' i делится на 3 без остатка ' добавляем запись, до и после неё вставляем строку-разделитель LR.AddRecord "Значение " & i & " делится на 3 без остатка", _ "дополнительная проверка", 2, LOG_SEPARATOR_BEFORE_AND_AFTER End If Next i LR.AddRecord "Цикл завершен", "Проверено 10 чисел", 1, LOG_SEPARATOR_AFTER LR.CloseLog ' закрываем лог (очистка буфера + запись конечной строки) ' LR.Show ' запуск текстового файла с логом (для просмотра End Sub
Можно при добавлении записей в лог указать уровень записей - чтобы выделять отдельные записи отступом слева, как на этом скриншоте: http://ExcelVBA.ru/pictures/20110829-cd9-96kb.jpg
Кроме того, можно задать максимальное значение буфера лога (запись непосредственно в файла происходит не при каждом выполнении команды AddRecord, а только при превышении размера буфера, принудительном сохранении лога опцией ForceSavingLog=TRUE, а также при сохранении лога командой SaveLog, и при закрытии лога методом CloseLog )
Размер буфера можно изменить, задав значение свойства maxLogSizeBeforeSave (количество символов, при котором лог-файл будет сохранён принудительно, по умолчанию = 5000)
Результатом работы этого кода будет создание файла с именем common.log в той же папке, где расположен файл Excel с макросом:
==================================================
2011-08-29 10:19:30 Starting Log Record...
2011-08-29 10:19:30 Событие 1 Информация 1
2011-08-29 10:19:30 Событие 2 Информация 2
2011-08-29 10:19:30 Событие 3 Информация 3
==================================================
2011-08-29 10:19:30 Значение 3 делится на 3 без остатка дополнительная проверка
==================================================
2011-08-29 10:19:30 Событие 4 Информация 4
2011-08-29 10:19:30 Событие 5 Информация 5
2011-08-29 10:19:30 Событие 6 Информация 6
==================================================
2011-08-29 10:19:30 Значение 6 делится на 3 без остатка дополнительная проверка
==================================================
2011-08-29 10:19:30 Событие 7 Информация 7
2011-08-29 10:19:30 Событие 8 Информация 8
2011-08-29 10:19:30 Событие 9 Информация 9
==================================================
2011-08-29 10:19:30 Значение 9 делится на 3 без остатка дополнительная проверка
==================================================
2011-08-29 10:19:30 Событие 10 Информация 10
2011-08-29 10:19:30 Цикл завершен Проверено 10 чисел
==================================================
2011-08-29 10:19:30 Finishing Log Record...
==================================================
Для создания сразу нескольких логов удобно использовать дополнительный модуль класса LogRecorders (также присутствует в прикреплённом файле)
Комментарии
Всё нормально с файлом (только что проверил)
Убедитесь, что антивирус не повреждает его после скачивания
Файл поврежден... Перезалейте пожалуйста
Приветствую. Спасибо за всё хорошее.
Полагаю, чтобы использовать LogRecorder standalone от модуля LogRecorders, стоит скопировать из второго в первый:
Public Enum LOG_TYPE ' типы лог-файлов
LOG_CURRENT = 0
LOG_DEFAULT = 1
LOG_ENCRYPTED = 2
LOG_SPECIAL = 4
LOG_ERRORS = 8
LOG_MAIL = 9
End Enum
иначе выдаёт: Compile error: User-defined type not defined
Отправить комментарий