Для использования подобного кода записи логов необходимо скопировать (перетащив мышкой) модуль класса 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 с макросом:










