Возникла необходимость вычислять рукожопов, которые входят под своей учеткой и вносят изменения в файл. Я не админ, файл мой (таблицы, формулы и тп), пользователей около 20чел. Было бы удобно иметь сведения, которые отображаются на любом листе в этом файле после любого сохранения. Интересна именно учетная запись, можно дату и время. Про учет внесения изменений (журнал на отдельном листе) читал, одно из необходимых условий в журнале не увидел, а именно изменение цвета шрифта. Значения в файле 4 цветов шрифта
Возникла необходимость вычислять рукожопов, которые входят под своей учеткой и вносят изменения в файл. Я не админ, файл мой (таблицы, формулы и тп), пользователей около 20чел. Было бы удобно иметь сведения, которые отображаются на любом листе в этом файле после любого сохранения. Интересна именно учетная запись, можно дату и время. Про учет внесения изменений (журнал на отдельном листе) читал, одно из необходимых условий в журнале не увидел, а именно изменение цвета шрифта. Значения в файле 4 цветов шрифтаNeWru
Сообщение отредактировал NeWru - Среда, 29.10.2025, 19:16
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) With Sheets("u") aa = .Cells(1, Columns.Count).End(xlToLeft).Column + 1 .Cells(1, aa) = Application.UserName .Cells(2, aa) = Now Sheets(1).Range("a1:a1000").Copy With .Cells(3, aa) .PasteSpecial Paste:=xlPasteAllUsingSourceTheme .PasteSpecial Paste:=xlPasteValues End With End With Application.CutCopyMode = False End Sub
[/vba]но это не точно)
сохраняйте файл, см. лист u
NeWru, возможно Вам подойдет [vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) With Sheets("u") aa = .Cells(1, Columns.Count).End(xlToLeft).Column + 1 .Cells(1, aa) = Application.UserName .Cells(2, aa) = Now Sheets(1).Range("a1:a1000").Copy With .Cells(3, aa) .PasteSpecial Paste:=xlPasteAllUsingSourceTheme .PasteSpecial Paste:=xlPasteValues End With End With Application.CutCopyMode = False End Sub
ИМХО, лучше использовать не имя пользователя Офиса Application.UserName, т.к. его при установке часто ставят от балды и вполне может повторяться в рамках одной сетки, а имя компьютера в сети CreateObject("Wscript.Network").UserName, т.к. оно уникально. Давно у меня валяется в копилке файлик выводящий в окно Debug оба этих имени. [vba]
Код
Private Sub Net_UserName() Debug.Print CreateObject("Wscript.Network").UserName Debug.Print Application.UserName End Sub
[/vba]
ИМХО, лучше использовать не имя пользователя Офиса Application.UserName, т.к. его при установке часто ставят от балды и вполне может повторяться в рамках одной сетки, а имя компьютера в сети CreateObject("Wscript.Network").UserName, т.к. оно уникально. Давно у меня валяется в копилке файлик выводящий в окно Debug оба этих имени. [vba]
Код
Private Sub Net_UserName() Debug.Print CreateObject("Wscript.Network").UserName Debug.Print Application.UserName End Sub