Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск пользователя - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск пользователя (Макросы/Sub)
Поиск пользователя
terminator Дата: Воскресенье, 28.02.2016, 20:18 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Привет всем.

Нужна консультация.
Имеется очень полезный макрос,его будут использовать разные люди.
Макрос делает вот что -добавляет компьютеры на установку в SCCM,отсюда сразу задача.
Нужен отчет в котором бы указывалось какой именно пользователь запускал файл.
VBA такое умеет?
 
Ответить
СообщениеПривет всем.

Нужна консультация.
Имеется очень полезный макрос,его будут использовать разные люди.
Макрос делает вот что -добавляет компьютеры на установку в SCCM,отсюда сразу задача.
Нужен отчет в котором бы указывалось какой именно пользователь запускал файл.
VBA такое умеет?

Автор - terminator
Дата добавления - 28.02.2016 в 20:18
StoTisteg Дата: Воскресенье, 28.02.2016, 20:28 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код

Application.UserName
[/vba]
при открытии книги?


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение[vba]
Код

Application.UserName
[/vba]
при открытии книги?

Автор - StoTisteg
Дата добавления - 28.02.2016 в 20:28
terminator Дата: Воскресенье, 28.02.2016, 20:34 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
при открытии книги?

Можно при открытии книги и отчет в лог в файл.
 
Ответить
Сообщение
при открытии книги?

Можно при открытии книги и отчет в лог в файл.

Автор - terminator
Дата добавления - 28.02.2016 в 20:34
StoTisteg Дата: Воскресенье, 28.02.2016, 20:37 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Что-то вроде такого:
[vba]
Код

Private Sub Workbook_Open()

    Const Addr = "<Путь_к_книге_с_протоколом>"

    On Error Resume Next
    Workbooks.Open Filename:=Addr
    If Err.Number <> 0 Then
        Workbooks.ADD
        ActiveWorkbook.SaveAs Filename:=Addr, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End If
    Worksheets(1).Activate
    If Cells(1, 1).Value = "" Then
        Cells(1, 1).Value = "Пользователь"
        Cells(1, 2).Value = "Дата"
        Cells(1, 3).Value = "Время"
    End If
    Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).Value = Application.UserName
    Cells(ActiveSheet.UsedRange.Rows.Count, 2).Value = Date
    Cells(ActiveSheet.UsedRange.Rows.Count, 3).Value = Time
    ActiveWorkbook.Save
    ActiveWorkbook.Close

End Sub
[/vba]
в модуль книги макроса.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Воскресенье, 28.02.2016, 21:14
 
Ответить
СообщениеЧто-то вроде такого:
[vba]
Код

Private Sub Workbook_Open()

    Const Addr = "<Путь_к_книге_с_протоколом>"

    On Error Resume Next
    Workbooks.Open Filename:=Addr
    If Err.Number <> 0 Then
        Workbooks.ADD
        ActiveWorkbook.SaveAs Filename:=Addr, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End If
    Worksheets(1).Activate
    If Cells(1, 1).Value = "" Then
        Cells(1, 1).Value = "Пользователь"
        Cells(1, 2).Value = "Дата"
        Cells(1, 3).Value = "Время"
    End If
    Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).Value = Application.UserName
    Cells(ActiveSheet.UsedRange.Rows.Count, 2).Value = Date
    Cells(ActiveSheet.UsedRange.Rows.Count, 3).Value = Time
    ActiveWorkbook.Save
    ActiveWorkbook.Close

End Sub
[/vba]
в модуль книги макроса.

Автор - StoTisteg
Дата добавления - 28.02.2016 в 20:37
StoTisteg Дата: Воскресенье, 28.02.2016, 20:38 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
в лог в файл

txt-лог имеется в виду?


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
в лог в файл

txt-лог имеется в виду?

Автор - StoTisteg
Дата добавления - 28.02.2016 в 20:38
terminator Дата: Воскресенье, 28.02.2016, 20:38 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
в модуль книги макроса.

Спасибо,добрый человек.
Я обязательно попробую и напишу.
:)
 
Ответить
Сообщение
в модуль книги макроса.

Спасибо,добрый человек.
Я обязательно попробую и напишу.
:)

Автор - terminator
Дата добавления - 28.02.2016 в 20:38
terminator Дата: Воскресенье, 28.02.2016, 20:44 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
txt-лог имеется в виду?

Да можно и такой
 
Ответить
Сообщение
txt-лог имеется в виду?

Да можно и такой

Автор - terminator
Дата добавления - 28.02.2016 в 20:44
StoTisteg Дата: Воскресенье, 28.02.2016, 20:48 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Да можно и такой

C одной стороны больше возни, с другой — открывается на запись без окна.
Я обязательно попробую и напишу.

Заголовки типа Пользователь, Дата, Время в первой строке лога не забудьте заранее создать :)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
Да можно и такой

C одной стороны больше возни, с другой — открывается на запись без окна.
Я обязательно попробую и напишу.

Заголовки типа Пользователь, Дата, Время в первой строке лога не забудьте заранее создать :)

Автор - StoTisteg
Дата добавления - 28.02.2016 в 20:48
terminator Дата: Воскресенье, 28.02.2016, 20:52 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Заголовки типа Пользователь, Дата, Время в первой строке лога не забудьте заранее создать

То есть я создаю txt файл прописываю внутри заголовки и располагаю в отдельном каталоге или рядом с макросом?
А имя лог файла просто log.txt?
 
Ответить
Сообщение
Заголовки типа Пользователь, Дата, Время в первой строке лога не забудьте заранее создать

То есть я создаю txt файл прописываю внутри заголовки и располагаю в отдельном каталоге или рядом с макросом?
А имя лог файла просто log.txt?

Автор - terminator
Дата добавления - 28.02.2016 в 20:52
StoTisteg Дата: Воскресенье, 28.02.2016, 21:03 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Сейчас мы говорим об экселевском протоколе. Я сейчас подправлю код, чтобы он всё делал сам, но прописать в него путь к протоколу Вам придётся без меня :)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеСейчас мы говорим об экселевском протоколе. Я сейчас подправлю код, чтобы он всё делал сам, но прописать в него путь к протоколу Вам придётся без меня :)

Автор - StoTisteg
Дата добавления - 28.02.2016 в 21:03
terminator Дата: Воскресенье, 28.02.2016, 21:09 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Так ну вроде разобрался.
Меня такой лог устроит.
:)

Спасибо,+1 к карме обеспечено ))
 
Ответить
СообщениеТак ну вроде разобрался.
Меня такой лог устроит.
:)

Спасибо,+1 к карме обеспечено ))

Автор - terminator
Дата добавления - 28.02.2016 в 21:09
terminator Дата: Воскресенье, 28.02.2016, 21:09 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Сейчас мы говорим об экселевском протоколе. Я сейчас подправлю код, чтобы он всё делал сам, но прописать в него путь к протоколу Вам придётся без меня

Да и так очень интересно вышло.
))
 
Ответить
Сообщение
Сейчас мы говорим об экселевском протоколе. Я сейчас подправлю код, чтобы он всё делал сам, но прописать в него путь к протоколу Вам придётся без меня

Да и так очень интересно вышло.
))

Автор - terminator
Дата добавления - 28.02.2016 в 21:09
terminator Дата: Воскресенье, 28.02.2016, 21:31 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Такс,работает.
А существует метод по результату лог писать.
Например макрос отработал успешно-лог успешно/ошибка ?
 
Ответить
СообщениеТакс,работает.
А существует метод по результату лог писать.
Например макрос отработал успешно-лог успешно/ошибка ?

Автор - terminator
Дата добавления - 28.02.2016 в 21:31
StoTisteg Дата: Воскресенье, 28.02.2016, 21:47 | Сообщение № 14
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
А что он делает при завершении? Закрывает свою книгу? Тогда логично в протокол добавить графу "Успешно", а в тот же модуль книги макроса
[vba]
Код

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Const Addr = "<Путь_к_книге_с_протоколом>"
    Dim Ern As Long

    Ern = Err.Number
    Workbooks.Open Filename:=Addr
    Worksheets(1).Activate
    Cells(ActiveSheet.UsedRange.Rows.Count, 4).Value = IIf(Ern = 0, "Успешно", "Ошибка " & Ern)
    ActiveWorkbook.Save
    ActiveWorkbook.Close

End Sub
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеА что он делает при завершении? Закрывает свою книгу? Тогда логично в протокол добавить графу "Успешно", а в тот же модуль книги макроса
[vba]
Код

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Const Addr = "<Путь_к_книге_с_протоколом>"
    Dim Ern As Long

    Ern = Err.Number
    Workbooks.Open Filename:=Addr
    Worksheets(1).Activate
    Cells(ActiveSheet.UsedRange.Rows.Count, 4).Value = IIf(Ern = 0, "Успешно", "Ошибка " & Ern)
    ActiveWorkbook.Save
    ActiveWorkbook.Close

End Sub
[/vba]

Автор - StoTisteg
Дата добавления - 28.02.2016 в 21:47
KuklP Дата: Воскресенье, 28.02.2016, 21:54 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 1996
Репутация: 436 ±
Замечаний: 0% ±

То же, только короче:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
with Workbooks.Open("<Путь_к_книге_с_протоколом>"). Worksheets(1)
.Cells(.UsedRange.Rows.Count, 4).Value = IIf(Err.Number = 0, "Успешно", "Ошибка " & Err.Number)
.parent.Close -1
end with
End Sub
[/vba]


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеТо же, только короче:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
with Workbooks.Open("<Путь_к_книге_с_протоколом>"). Worksheets(1)
.Cells(.UsedRange.Rows.Count, 4).Value = IIf(Err.Number = 0, "Успешно", "Ошибка " & Err.Number)
.parent.Close -1
end with
End Sub
[/vba]

Автор - KuklP
Дата добавления - 28.02.2016 в 21:54
StoTisteg Дата: Воскресенье, 28.02.2016, 22:24 | Сообщение № 16
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Хм. А не будет ли в строке
[vba]
Код

.Cells(.UsedRange.Rows.Count, 4).Value = IIf(Err.Number = 0, "Успешно", "Ошибка " & Err.Number)
[/vba]
Err.Number относиться к
[vba]
Код

Workbooks.Open
[/vba]
и соответственно всегда быть равным 0?


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеХм. А не будет ли в строке
[vba]
Код

.Cells(.UsedRange.Rows.Count, 4).Value = IIf(Err.Number = 0, "Успешно", "Ошибка " & Err.Number)
[/vba]
Err.Number относиться к
[vba]
Код

Workbooks.Open
[/vba]
и соответственно всегда быть равным 0?

Автор - StoTisteg
Дата добавления - 28.02.2016 в 22:24
KuklP Дата: Воскресенье, 28.02.2016, 22:33 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 1996
Репутация: 436 ±
Замечаний: 0% ±

Если до этого была ошибка и она не очищена err.clear ? Не знаю, не знаю :) Но вообще-то принято делать так:
[vba]
Код
Private Sub Workbook_Open()
    Const Addr = "<Путь_к_книге_с_протоколом>"
   On Error GoTo Workbook_Open_Error

   'тут код программы

   On Error GoTo 0
   Exit Sub

Workbook_Open_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Workbook_Open of VBA Document ЭтаКнига"
    ' и вот тут можно пихать описание ошибки куда угодно
End Sub
[/vba]
И еще - любая предыдущая ошибка по идее должна стираться директивой end sub, так что вариант проверять при закрытии книги - не вариант %) :D


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Воскресенье, 28.02.2016, 22:44
 
Ответить
СообщениеЕсли до этого была ошибка и она не очищена err.clear ? Не знаю, не знаю :) Но вообще-то принято делать так:
[vba]
Код
Private Sub Workbook_Open()
    Const Addr = "<Путь_к_книге_с_протоколом>"
   On Error GoTo Workbook_Open_Error

   'тут код программы

   On Error GoTo 0
   Exit Sub

Workbook_Open_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Workbook_Open of VBA Document ЭтаКнига"
    ' и вот тут можно пихать описание ошибки куда угодно
End Sub
[/vba]
И еще - любая предыдущая ошибка по идее должна стираться директивой end sub, так что вариант проверять при закрытии книги - не вариант %) :D

Автор - KuklP
Дата добавления - 28.02.2016 в 22:33
StoTisteg Дата: Воскресенье, 28.02.2016, 23:27 | Сообщение № 18
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
любая предыдущая ошибка по идее должна стираться директивой end sub

Слона-то мы и не заметили...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
любая предыдущая ошибка по идее должна стираться директивой end sub

Слона-то мы и не заметили...

Автор - StoTisteg
Дата добавления - 28.02.2016 в 23:27
terminator Дата: Понедельник, 29.02.2016, 20:24 | Сообщение № 19
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А вот еще вариант такой.
Забыл сказать что у меня макрос лог плюет но плюет его в тхт.
Там лог пишет что комп добавлен в туда то и ок.

Можно вот эти варианты как то примостить в существующий лог?
У меня файла под рукой нет..ну так примерно хотя бы..
 
Ответить
СообщениеА вот еще вариант такой.
Забыл сказать что у меня макрос лог плюет но плюет его в тхт.
Там лог пишет что комп добавлен в туда то и ок.

Можно вот эти варианты как то примостить в существующий лог?
У меня файла под рукой нет..ну так примерно хотя бы..

Автор - terminator
Дата добавления - 29.02.2016 в 20:24
RAN Дата: Понедельник, 29.02.2016, 21:09 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Слона-то мы и не заметили...

И правильно. Ибо это не так.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Слона-то мы и не заметили...

И правильно. Ибо это не так.

Автор - RAN
Дата добавления - 29.02.2016 в 21:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск пользователя (Макросы/Sub)
Страница 1 из 212»
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!