Ведение лога(запись в файл)
Espada
Дата: Вторник, 17.12.2019, 09:13 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Доброго дня. есть вопросик: Есть журнал паспортов(в excel) с 5-ю кнопками(добавить, редактировать, удалить, поиск, проверка). Появилась необходимость вести Лог нажатых кнопок. может есть пример кода, что бы при нажатии на кнопку,велась запись в уже созданный существующий текстовый файл. файл открывать или как либо сообщать о записи не нужно. спасибо)
Доброго дня. есть вопросик: Есть журнал паспортов(в excel) с 5-ю кнопками(добавить, редактировать, удалить, поиск, проверка). Появилась необходимость вести Лог нажатых кнопок. может есть пример кода, что бы при нажатии на кнопку,велась запись в уже созданный существующий текстовый файл. файл открывать или как либо сообщать о записи не нужно. спасибо) Espada
Сообщение отредактировал Espada - Вторник, 17.12.2019, 09:14
Ответить
Сообщение Доброго дня. есть вопросик: Есть журнал паспортов(в excel) с 5-ю кнопками(добавить, редактировать, удалить, поиск, проверка). Появилась необходимость вести Лог нажатых кнопок. может есть пример кода, что бы при нажатии на кнопку,велась запись в уже созданный существующий текстовый файл. файл открывать или как либо сообщать о записи не нужно. спасибо) Автор - Espada Дата добавления - 17.12.2019 в 09:13
boa
Дата: Вторник, 17.12.2019, 09:46 |
Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
Espada, [vba]Код
Private Sub EditLogFile(ByVal LogFilePath$, Optional LogEvent$ = "", Optional LogFileName$ = "LOG.txt") '' Author: boa '' Written: 25.03.2016 '' Description: Recording data proces 'LogFilePath - Путь размещения файла лога 'LogEvent - записуемое сообщение 'LogFileName - имя файла-Лога On Error GoTo errHandler Dim LogFileFullName$: LogFileFullName = LogFilePath & "Logs\" & LogFileName Dim objFSO As Object: Set objFSO = CreateObject("Scripting.FileSystemObject") Dim fileNum%: fileNum = FreeFile() Open LogFileFullName For Append As #fileNum ' открываем файл в режиме дозаписи Print #1, Chr(34) & Format(Date, "YYYY.MM.DD") & Chr(32) & Time$ & Chr(34) & Chr(59) & _ Chr(34) & Application.UserName & Chr(34) & Chr(59) & _ IIf(Len(LogEvent) > 0, Chr(34) & LogEvent & Chr(34), "") Close #fileNum errHandler: Set objFSO = Nothing: ' очищаем переменные If Err.Number > 0 Then Debug.Print "Ошибка записи лог файла. Ошибка №" & Err.Number & " - " & Err.Description End Sub
[/vba]
Espada, [vba]Код
Private Sub EditLogFile(ByVal LogFilePath$, Optional LogEvent$ = "", Optional LogFileName$ = "LOG.txt") '' Author: boa '' Written: 25.03.2016 '' Description: Recording data proces 'LogFilePath - Путь размещения файла лога 'LogEvent - записуемое сообщение 'LogFileName - имя файла-Лога On Error GoTo errHandler Dim LogFileFullName$: LogFileFullName = LogFilePath & "Logs\" & LogFileName Dim objFSO As Object: Set objFSO = CreateObject("Scripting.FileSystemObject") Dim fileNum%: fileNum = FreeFile() Open LogFileFullName For Append As #fileNum ' открываем файл в режиме дозаписи Print #1, Chr(34) & Format(Date, "YYYY.MM.DD") & Chr(32) & Time$ & Chr(34) & Chr(59) & _ Chr(34) & Application.UserName & Chr(34) & Chr(59) & _ IIf(Len(LogEvent) > 0, Chr(34) & LogEvent & Chr(34), "") Close #fileNum errHandler: Set objFSO = Nothing: ' очищаем переменные If Err.Number > 0 Then Debug.Print "Ошибка записи лог файла. Ошибка №" & Err.Number & " - " & Err.Description End Sub
[/vba] boa
Ответить
Сообщение Espada, [vba]Код
Private Sub EditLogFile(ByVal LogFilePath$, Optional LogEvent$ = "", Optional LogFileName$ = "LOG.txt") '' Author: boa '' Written: 25.03.2016 '' Description: Recording data proces 'LogFilePath - Путь размещения файла лога 'LogEvent - записуемое сообщение 'LogFileName - имя файла-Лога On Error GoTo errHandler Dim LogFileFullName$: LogFileFullName = LogFilePath & "Logs\" & LogFileName Dim objFSO As Object: Set objFSO = CreateObject("Scripting.FileSystemObject") Dim fileNum%: fileNum = FreeFile() Open LogFileFullName For Append As #fileNum ' открываем файл в режиме дозаписи Print #1, Chr(34) & Format(Date, "YYYY.MM.DD") & Chr(32) & Time$ & Chr(34) & Chr(59) & _ Chr(34) & Application.UserName & Chr(34) & Chr(59) & _ IIf(Len(LogEvent) > 0, Chr(34) & LogEvent & Chr(34), "") Close #fileNum errHandler: Set objFSO = Nothing: ' очищаем переменные If Err.Number > 0 Then Debug.Print "Ошибка записи лог файла. Ошибка №" & Err.Number & " - " & Err.Description End Sub
[/vba] Автор - boa Дата добавления - 17.12.2019 в 09:46
Espada
Дата: Вторник, 17.12.2019, 10:41 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума я что-то делаю не так, хочу проверить работоспособность, вставляю в чистый документ, но у меня даже в списке макросов он не отображается...
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума я что-то делаю не так, хочу проверить работоспособность, вставляю в чистый документ, но у меня даже в списке макросов он не отображается...Espada
Сообщение отредактировал китин - Вторник, 17.12.2019, 11:08
Ответить
Сообщение Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума я что-то делаю не так, хочу проверить работоспособность, вставляю в чистый документ, но у меня даже в списке макросов он не отображается...Автор - Espada Дата добавления - 17.12.2019 в 10:41
boa
Дата: Вторник, 17.12.2019, 10:53 |
Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
так он на прямую и не вызовется данному макросу надо передать параметры [vba]Код
Sub test() 'здесь нажалась ваша кнопка ' ... 'здесь записываем лог Call EditLogFile(ThisWorkbook.Path & "\", "Нажали кнопку ""Далее""") End Sub
[/vba]
так он на прямую и не вызовется данному макросу надо передать параметры [vba]Код
Sub test() 'здесь нажалась ваша кнопка ' ... 'здесь записываем лог Call EditLogFile(ThisWorkbook.Path & "\", "Нажали кнопку ""Далее""") End Sub
[/vba] boa
Ответить
Сообщение так он на прямую и не вызовется данному макросу надо передать параметры [vba]Код
Sub test() 'здесь нажалась ваша кнопка ' ... 'здесь записываем лог Call EditLogFile(ThisWorkbook.Path & "\", "Нажали кнопку ""Далее""") End Sub
[/vba] Автор - boa Дата добавления - 17.12.2019 в 10:53
Espada
Дата: Вторник, 17.12.2019, 15:21 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
так он на прямую и не вызовется данному макросу надо передать параметры
Спасибо большое, всё получилось.
так он на прямую и не вызовется данному макросу надо передать параметры
Спасибо большое, всё получилось.Espada
Ответить
Сообщение так он на прямую и не вызовется данному макросу надо передать параметры
Спасибо большое, всё получилось.Автор - Espada Дата добавления - 17.12.2019 в 15:21
RAN
Дата: Вторник, 17.12.2019, 17:24 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
boa , круто закручено. Если Use FSO, то почему Open? А если Open, то зачем Use FSO?
boa , круто закручено. Если Use FSO, то почему Open? А если Open, то зачем Use FSO?RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение boa , круто закручено. Если Use FSO, то почему Open? А если Open, то зачем Use FSO?Автор - RAN Дата добавления - 17.12.2019 в 17:24
boa
Дата: Среда, 18.12.2019, 12:56 |
Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
RAN, недосмотрел, это остался кусок не обрезанного кода objFSO там вообще не нужен и данным кодом не используется. Исправленный код под +
[vba]
Код
Private Sub EditLogFile(ByVal LogFilePath$, Optional LogEvent$ = "", Optional LogFileName$ = "LOG.txt") '' Author: boa '' Written: 25.03.2016 '' Description: Recording data proces ' LogFilePath - Путь размещения файла лога ' LogEvent - записуемое сообщение ' LogFileName - имя файла-Лога On Error GoTo errHandler Dim LogFileFullName$: LogFileFullName = LogFilePath & LogFileName Dim fileNum%: fileNum = FreeFile() Open LogFileFullName For Append As #fileNum ' открываем файл в режиме дозаписи Print #1, Chr(34) & Format(Date, "YYYY.MM.DD") & Chr(32) & Time$ & Chr(34) & Chr(59) & _ Chr(34) & Application.UserName & Chr(34) & Chr(59) & _ IIf(Len(LogEvent) > 0, Chr(34) & LogEvent & Chr(34), "") Close #fileNum Exit Sub errHandler: Debug.Print "Ошибка записи лог файла. Ошибка №" & Err.Number & " - " & Err.Description End Sub
[/vba]
RAN, недосмотрел, это остался кусок не обрезанного кода objFSO там вообще не нужен и данным кодом не используется. Исправленный код под +
[vba]
Код
Private Sub EditLogFile(ByVal LogFilePath$, Optional LogEvent$ = "", Optional LogFileName$ = "LOG.txt") '' Author: boa '' Written: 25.03.2016 '' Description: Recording data proces ' LogFilePath - Путь размещения файла лога ' LogEvent - записуемое сообщение ' LogFileName - имя файла-Лога On Error GoTo errHandler Dim LogFileFullName$: LogFileFullName = LogFilePath & LogFileName Dim fileNum%: fileNum = FreeFile() Open LogFileFullName For Append As #fileNum ' открываем файл в режиме дозаписи Print #1, Chr(34) & Format(Date, "YYYY.MM.DD") & Chr(32) & Time$ & Chr(34) & Chr(59) & _ Chr(34) & Application.UserName & Chr(34) & Chr(59) & _ IIf(Len(LogEvent) > 0, Chr(34) & LogEvent & Chr(34), "") Close #fileNum Exit Sub errHandler: Debug.Print "Ошибка записи лог файла. Ошибка №" & Err.Number & " - " & Err.Description End Sub
[/vba]
boa
Ответить
Сообщение RAN, недосмотрел, это остался кусок не обрезанного кода objFSO там вообще не нужен и данным кодом не используется. Исправленный код под +
[vba]
Код
Private Sub EditLogFile(ByVal LogFilePath$, Optional LogEvent$ = "", Optional LogFileName$ = "LOG.txt") '' Author: boa '' Written: 25.03.2016 '' Description: Recording data proces ' LogFilePath - Путь размещения файла лога ' LogEvent - записуемое сообщение ' LogFileName - имя файла-Лога On Error GoTo errHandler Dim LogFileFullName$: LogFileFullName = LogFilePath & LogFileName Dim fileNum%: fileNum = FreeFile() Open LogFileFullName For Append As #fileNum ' открываем файл в режиме дозаписи Print #1, Chr(34) & Format(Date, "YYYY.MM.DD") & Chr(32) & Time$ & Chr(34) & Chr(59) & _ Chr(34) & Application.UserName & Chr(34) & Chr(59) & _ IIf(Len(LogEvent) > 0, Chr(34) & LogEvent & Chr(34), "") Close #fileNum Exit Sub errHandler: Debug.Print "Ошибка записи лог файла. Ошибка №" & Err.Number & " - " & Err.Description End Sub
[/vba]
Автор - boa Дата добавления - 18.12.2019 в 12:56