Макрос для определения пользователя

Автор NickGrava, 4 декабря 2015, 08:10

0 Пользователи и 1 гость просматривают эту тему.

NickGrava

Всем добрый день! Подскажите есть ли такой макрос который бы при открытии документа Calc определял имя пользователя под которым он запущен, и выводил его в какую нить ячейку???

Буду очень признателен! Спасибо!

rami

Цитата: NickGrava от  4 декабря 2015, 06:10Подскажите есть ли такой макрос который бы при открытии документа Calc определял имя пользователя под которым он запущен, и выводил его в какую нить ячейку???
Если вам нужно имя пользователя определённое в "Параметры" —> "Сведения о пользователе", то так:Sub main
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("A1").setString(ThisComponent.DocumentProperties.Author)
End Sub

NickGrava

Спасибо, но необходимо имя пользователя под которым была загружена винда.

NickGrava

Вообщем как найти имя пользователя я сообразил - а вот как сделать так чтобы макрос запускался сам при открытии документа я пока сообразить не могу.

rami

Цитата: NickGrava от  4 декабря 2015, 11:45Вообщем как найти имя пользователя я сообразил - а вот как сделать так чтобы макрос запускался сам при открытии документа я пока сообразить не могу.
И как найти имя?

NickGrava

#5
Вот так получаем папку пользователя Мои Документы - а уж вычленить из имени этой папки самого юзера это можно и без макроса.


Sub DesktopName
Dim a
GlobalScope.BasicLibraries.LoadLibrary("Tools")
a = GetPathSettings("Work")
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("C12").setString(ConvertFromURL(a))
End Sub



Однако, это решение для случая если настройки папки "мои документы"стандартные (что бывает часто).

rami

Цитата: NickGrava от  4 декабря 2015, 11:45а вот как сделать так чтобы макрос запускался сам при открытии документа я пока сообразить не могу.
Надо назначить макрос на событие "Открытие файла". "Сервис" —> "Настройки" —> "События"

NickGrava


kompilainenn

а если на машине зарегистрировано НЕСКОЛЬКО юзеров?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: kompilainenn от  4 декабря 2015, 12:38а если на машине зарегистрировано НЕСКОЛЬКО юзеров?
Тогда у каждого должен быть свой Офис. При открытии документа разными пользователями имя пользователя будет меняться соответственно.

kompilainenn

Цитата: rami от  4 декабря 2015, 12:47Тогда у каждого должен быть свой Офис. При открытии документа разными пользователями имя пользователя будет меняться соответственно.
с чего бы это у каждого должен быть свой офис?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: kompilainenn от  4 декабря 2015, 14:36с чего бы это у каждого должен быть свой офис?
Не знаю как на винде, но в маке из одной учётной записи нет свободного доступа к другим — это как разные компы в одном корпусе.

JohnSUN

#12
Как насчет

Function WhoAmI() As String
WhoAmI = Environ("USERNAME")
End Function
Вызов, как обычно - просто пишем в нужную ячейку
=WHOAMI()

rami, не влом проверить как мак отработает? А то в справке тонко намекнули, что "Переменные среды зависят от типа операционной системы"
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от  4 декабря 2015, 17:03не влом проверить как мак отработает? А то в справке тонко намекнули, что "Переменные среды зависят от типа операционной системы"
Показывает пустую строку.

JohnSUN

А $USER вместо USERNAME - без того же результата?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне