Как определить пользователя в excel

Содержание

  1. Получение полного имени пользователя Windows макросом VBA
  2. Комментарии
  3. Процедура Visual Basic для получения текущего имени пользователя
  4. Аннотация
  5. Дополнительная информация
  6. ПРИМЕР
  7. Excel как узнать имя пользователя
  8. Вопрос
  9. Все ответы
  10. Как узнать кем создан файл эксель
  11. Как узнать автора файла Excel?
  12. Как проверить автора Excel?
  13. Как посмотреть кто вносил изменения в документ Excel?
  14. Как убрать автора в Excel?
  15. Где посмотреть создателя файла?
  16. Как посмотреть дату создания файла Excel?
  17. Как убрать имя пользователя в Excel?
  18. Как посмотреть историю сохранения файла Excel?
  19. Как в Excel узнать дату изменения ячейки?
  20. Как удалить информацию из файла doc?
  21. Как изменить свойства файла Excel?
  22. Как изменить имя файла в Excel?
  23. Как посмотреть создателя файла Ворд?
  24. Как посмотреть дату создания файла в ворде?
  25. Как проверить метаданные файла?
  26. Как узнать кем создан файл эксель

Получение полного имени пользователя Windows макросом VBA

Чтобы получить полное имя пользователя в Windows, можно использовать функцию UserFullName:

Данная функция использует интерфейс WMI для получения необходимых данных.

Посмотреть список всех учётных записей пользователей на компьютере можно следующим кодом:

Результат работы этого кода:

FullName: ASP.NET Machine Account
FullName: Учетная запись помощника для удаленного рабочего стола
FullName: CN=Microsoft Corporation,L=Redmond,S=Washington, C=US
FullName:
FullName: VBA Developer

Если же вам нужно получить только логин (имя пользователя) Windows, то код будет заметно проще:
(все 3 способа равнозначны — возвращают один и тот же результат)

PS: При создании этого макроса была использована программа WMI Code Creator:

Комментарии

А разве Application.UserName ровно это и не возвращает?

Добрый день!
В этот код можно добавить адрес или IP?
Sub WMI_username()

Workbooks.Open «C:Users» & iName & «DesktopÁóôåðíûé ñêëàä.xlsx»

Dim iName As String
iName = Environ(«UserName»)

Workbooks.Open «C:UsersiNameDesktopÁóôåðíûé ñêëàä.xlsx»

Такая проблема, не могу получить адрес.
Выдает код ошибки 1004

При желании можно утяжелить код с помощью «Application.PathSeparator», дабы не зависеть от версий операционной системы.

Код, конечно, тестировался, — только на WindowsXP (да и в статье приведен результат работы кода)
Сейчас проверил — в WinXP код работает и с прямыми, и с обратными слешами.
Не знал, что в Win7 что-то поменяли в этом плане.

Исправил все слеши в коде.

Насчёт объявления переменных: видимо, у вас в настройках редактора VBA включена опция «Требовать объявление переменных»,
и, соответственно, первой строкой в модуле присутствует директива Option Explicit
Я же этот режим не использую — потому часто и не объявляю переменные в своих макросах.

Источник

Процедура Visual Basic для получения текущего имени пользователя

Аннотация

Можно сделать вызов Windows API (интерфейс прикладного программирования) для Microsoft Windows библиотек DLL (библиотека динамической компоновки) для получения имени текущего пользователя. Имя текущего пользователя можно получить с помощью функции GetUserNameA в ADVAPI32. DLL.

Дополнительная информация

Microsoft Excel не имеет встроенные функциональные возможности для доступа к имени пользователя текущего компьютера. Тем не менее можно использовать оператор Declare в Visual Basic для приложений макроса для вызова функции Microsoft Windows, которая возвращает имя текущего пользователя. Корпорация Майкрософт предоставляет примеры процедур Visual Basic для приложений только для иллюстрации и без гарантии или подразумеваемых, включая, помимо прочего, подразумеваемые гарантии товарности или пригодности для определенной цели. Visual Basic процедуры, описанные в этой статье предоставлены «как есть» и корпорация Майкрософт не гарантирует, что они могут использоваться во всех ситуациях. Хотя специалисты службы технической поддержки Майкрософт могут объяснить возможности конкретного макроса, они будут изменять примеры для расширения его функциональности, а также они помогут вам создавать макросы для удовлетворения конкретных потребностей. Если вопросам программирования может потребоваться обратитесь к одной из поставщиков решений корпорации Майкрософт. Поставщики решений предоставляют широкий спектр платных служб, включая создание пользовательских макросов. Дополнительные сведения о поставщиках решений Microsoft вызов сведений служба поддержки клиентов на (800) 426-9400.

ПРИМЕР

Введите следующий код в новый модуль:

Запустите макрос Get_User_Name. Обратите внимание, что имя текущего пользователя появится в окне сообщения.

Источник

Excel как узнать имя пользователя

Вопрос

в VBScript пытаюсь создать подключение к excel файлу. но эта книга лежит на сервере, иногда эта книга бывает занята другим пользователем. как я могу получить имя пользователя кто занял данную таблицу? уведомление во вложении. Имя пользователя как зарегистрирован в office

я могу читать данные о пользователях через aplication.userstatus. но для этого она должна быть открыта для редактирования нескольким пользователям. Как можно узнать кем занята книга для редактирования

Все ответы

во вложении изображении скриншоты что я хочу видеть

По данным вами ссылкам, результат един:

Да, я Жук, три пары лапок и фасеточные глаза :))

во вложении изображении скриншоты что я хочу видеть

The opinion expressed by me is not an official position of Microsoft

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

и еще тут описан воркераунд по вашей теме. и еще одно похожее обсуждение

The opinion expressed by me is not an official position of Microsoft

$ и там можно как то узнать кто открыл файл для редактирования.Если верно, то подскажите где в этом файле я могу узнать имя пользователя

На вкладке Правка в списке Файл открыт следующими пользователями просмотрите имена пользователей.

Да, я Жук, три пары лапок и фасеточные глаза :))

На вкладке Правка в списке Файл открыт следующими пользователями просмотрите имена пользователей.

Да, я Жук, три пары лапок и фасеточные глаза :))

The opinion expressed by me is not an official position of Microsoft

Он открывает файл через устаревшие «Общие книги» размещённую в сети предприятия, но файл у него открывается в режиме «Только для чтения» и он не видит кто из пользователей открыл файл. Для решения этой задачи, он возможно пишет в VBA код выполняющий задачу:

«Если при попытке открыть файл, файл можно открыть только в режиме «Только для чтения», VBA выводит окно «Файл занят пользователем: Имярек», в противном случае открыть файл на редактирование.»

Допускаю, что ему необходим «UserName» или его аналог для VBA.

Да, я Жук, три пары лапок и фасеточные глаза :))

да мне нужно это. как можно реализовать?

Да, я Жук, три пары лапок и фасеточные глаза :))

Внимательно изучите статью «Общие книги», ссылку на которую я вам дал ранее. В ней пошагово в девять шагов, написано как создавать и работать с Общей книгой. Также внимательно изучите «Дополнительные сведения».

По вашему скриншоту, файл не является Общей книгой и открыт в монопольном режиме :

Дополните, что у вас имеется уже сейчас, и что может ваш макрос.

В дополнение, если бы вы внимательно прочитали статью и выполнили все рекомендации статьи, ссылку на которую вам дал ранее, то у вас был бы результат отображения всех пользователей открывших книгу на редактирование:

и не нужно было бы создавать макрос, так как Общая книга открывается для редактирования у всех открывающих Общую книгу:

При наличии Skype, вы также могли бы обмениваться мгновенными сообщениями с совместно работающими пользователями.

Да, я Жук, три пары лапок и фасеточные глаза :))

Источник

Как узнать кем создан файл эксель

Как узнать автора файла Excel?

Чтобы увидеть свойство Author (Автор) для документа или книги, щелкните Файл > Сведения, а затем найдите author (Автор) в области Related People (Связанные люди) справа.

Как проверить автора Excel?

Откройте в Проводнике Windows папку, содержащую файлы Excel. Выберите нужный файл. Кликните по нему правой кнопкой мыши и в контекстном меню нажмите Свойства (Properties). На вкладке Подробно (Details) можно найти заголовок, тему, автора документа, комментарии и другие данные.

Как посмотреть кто вносил изменения в документ Excel?

Просмотр журнала изменений

  1. На вкладке Рецензирование нажмите кнопку Отслеживание изменений и выберите команду Выделить исправления. …
  2. В группе Отслеживать исправления, внесенные установите флажок по времени и в списке время выберите вариант Все.
  3. Снимите флажки пользователем и в диапазоне.

Как убрать автора в Excel?

Чтобы удалить автора из сведений о документе, кликните по имени автора правой кнопкой мыши и в появившемся меню выберите Удалить пользователя (Remove Person). Ещё добавлять и удалять авторов можно при помощи Области сведений о документе.

Где посмотреть создателя файла?

Щелкните на файле правой кнопкой мыши и выберите в контекстном меню команду Свойства. В окне свойств перейдите на вкладку Безопасность и щелкните на кнопке Дополнительно. В диалоговом окне Дополнительные параметры безопасности перейдите на вкладку Владелец, в которой расположено поле Текущий владелец этого элемента.

Как посмотреть дату создания файла Excel?

Как посмотреть дату создания файла

Выполните следующие шаги:

  1. Перетащите файл в окно программы, или нажмите на кнопку «Add Files», для добавления файла с ПК. …
  2. В полях «Created Date» (дата создания), «Modified Date» (дата изменения), «Accessed Date» (дата доступа) установите подходящие значения для даты и времени.

Как убрать имя пользователя в Excel?

Нажмите на вкладку File (Файл), щелкните по Options (Параметры) и выберите вкладку General (Общие). Измените имя пользователя.

Как посмотреть историю сохранения файла Excel?

Восстановление предыдущих версий файла Office

  1. Откройте файл, с которым вы работали.
  2. Перейдите в папку «>».
  3. В области «Управление книгой»или «Управлениепрезентацией» выберите файл с меткой (при закрытии без сохранения).
  4. На панели в верхней части файла выберите «Восстановить», чтобы переписать сохраненные ранее версии.

Как в Excel узнать дату изменения ячейки?

Меню Сервис-Параметры-вычисления-Итерации. Галочку видите.

Как удалить информацию из файла doc?

Перейдите на вкладку файл и нажмите кнопку сведения, затем нажмите кнопку Проверить наличие проблем и выберите команду Проверить документ. Щелкните, чтобы снять флажок Свойства документа и личные сведения .

Как изменить свойства файла Excel?

Просмотр и изменение настраиваемых свойств текущего файла

  1. Откройте вкладку Файл.
  2. Выберите пункт Сведения.
  3. Щелкните Свойства вверху страницы и выберите Дополнительные свойства. Примечания: …
  4. Откройте вкладку Прочие. Введите имя пользовательского свойства в поле Название или выберите его в списке. …
  5. Нажмите кнопку ОК.

Как изменить имя файла в Excel?

Откройте проводник, открыв папку «Мой компьютер»или нажав клавиши Windows+E. Найдите файл, который вы хотите переименовать, выберите его и нажмите кнопку «Переименовать» на ленте (или нажмите клавишу F2 на клавиатуре). Введите новое имя файла и нажмите ввод.

Как посмотреть создателя файла Ворд?

Чтобы увидеть свойство Author (Автор) для документа или книги, щелкните Файл > Сведения, а затем найдите author (Автор) в области Related People (Связанные люди) справа.

Как посмотреть дату создания файла в ворде?

  1. Шаг 1. Перейдите к местоположению документа Word, для которого вы хотите проверить дату создания. Наведите указатель мыши на документ Word и щелкните его правой кнопкой мыши.
  2. Шаг 2. Выберите опцию «Свойства» во всплывающем меню. …
  3. Шаг 3. Нажмите вкладку «Подробности» в верхней части диалогового окна.

Как проверить метаданные файла?

Для полного просмотра метаданных данного файла, нажмите на него правой кнопкой мыши и выберите в контекстном меню пункт Свойства. Когда откроется окно, перейдите на вкладку Подробности. В этом месте вы найдете все поля Exif, которые можно изменять.

Как узнать кем создан файл эксель

По данным вами ссылкам, результат един:

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено Жук MVP, Moderator 19 июня 2018 г. 11:37

во вложении изображении скриншоты что я хочу видеть

The opinion expressed by me is not an official position of Microsoft

  • Изменено marat1905 19 июня 2018 г. 19:34

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

и еще тут описан воркераунд по вашей теме. и еще одно похожее обсуждение

The opinion expressed by me is not an official position of Microsoft

  • Изменено Vector BCO Moderator 19 июня 2018 г. 20:49

$ и там можно как то узнать кто открыл файл для редактирования.Если верно, то подскажите где в этом файле я могу узнать имя пользователя

На вкладке Правка в списке Файл открыт следующими пользователями просмотрите имена пользователей.

Да, я Жук, три пары лапок и фасеточные глаза :))

Выполните и напишите ваш результат:

На вкладке Правка в списке Файл открыт следующими пользователями просмотрите имена пользователей.

Да, я Жук, три пары лапок и фасеточные глаза :))

The opinion expressed by me is not an official position of Microsoft

Он открывает файл через устаревшие «Общие книги» размещённую в сети предприятия, но файл у него открывается в режиме «Только для чтения» и он не видит кто из пользователей открыл файл. Для решения этой задачи, он возможно пишет в VBA код выполняющий задачу:

«Если при попытке открыть файл, файл можно открыть только в режиме «Только для чтения», VBA выводит окно «Файл занят пользователем: Имярек», в противном случае открыть файл на редактирование.»

Допускаю, что ему необходим «UserName» или его аналог для VBA.

Да, я Жук, три пары лапок и фасеточные глаза :))

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено marat1905 20 июня 2018 г. 11:02

Внимательно изучите статью «Общие книги», ссылку на которую я вам дал ранее. В ней пошагово в девять шагов, написано как создавать и работать с Общей книгой. Также внимательно изучите «Дополнительные сведения».

По вашему скриншоту, файл не является Общей книгой и открыт в монопольном режиме :

Дополните, что у вас имеется уже сейчас, и что может ваш макрос.

В дополнение, если бы вы внимательно прочитали статью и выполнили все рекомендации статьи, ссылку на которую вам дал ранее, то у вас был бы результат отображения всех пользователей открывших книгу на редактирование:

и не нужно было бы создавать макрос, так как Общая книга открывается для редактирования у всех открывающих Общую книгу:

При наличии Skype, вы также могли бы обмениваться мгновенными сообщениями с совместно работающими пользователями.

Источник

Получить имя учетной записи Microsoft office

EvgenyD

Дата: Вторник, 01.09.2015, 15:10 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Добрый день, уважаемые форумчане!
Никак не могу найти каким образом получить имя учетной записи Microsoft.
Именно той, которая указана в меню Файл->Учетная запись (блок «Сведения о пользователе»)?

 

Ответить

Rioran

Дата: Вторник, 01.09.2015, 15:29 |
Сообщение № 2

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

EvgenyD, привет.

Оказалось неочевидно:

[vba]

[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

_Boroda_

Дата: Вторник, 01.09.2015, 15:36 |
Сообщение № 3

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Дает имя пользователя.

А учетку можно так
[vba]

Код

Set SI_ = CreateObject(«ADSystemInfo»)
Set Un_ = GetObject(«LDAP://» & SI_.UserName)
UZ_ = Un_.DisplayName

[/vba]
Это не мое, давно уже где-то нашел


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

EvgenyD

Дата: Вторник, 01.09.2015, 15:43 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Rioran, это не выдает желаемого результата. Тут возможно есть еще важные моменты, которые надо было написать. Пользователи на Office 365 Buisness, соответственно у каждого свой логин microsoft — его то и нужно будет получить.
[vba][/vba] — выводит имя пользователя ПК
А мне нужно получить то, что на принтскрине в приложенном файле.

К сообщению приложен файл:

0769789.jpg
(26.6 Kb)

 

Ответить

Rioran

Дата: Вторник, 01.09.2015, 15:57 |
Сообщение № 5

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

_Boroda_, EvgenyD, странно, потому что у меня выводит именно то, что отмечено на рисунке. Microsoft Office профессиональный плюс 2013.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

_Boroda_

Дата: Вторник, 01.09.2015, 16:06 |
Сообщение № 6

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Роман, а они у тебя не совпадают ли? Посмотри, что у тебя написано в Файл — Параметры — Имя пользователя?


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

EvgenyD

Дата: Вторник, 01.09.2015, 16:06 |
Сообщение № 7

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Rioran, возможно из-за office 365 такая разница. Нашел в реестре, попробую использовать.

 

Ответить

Rioran

Дата: Вторник, 01.09.2015, 16:13 |
Сообщение № 8

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

_Boroda_, спасибо, ты прав, совпадают. Значит, у каждого приложения офиса есть возможность настроить отдельное имя пользователя.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

EvgenyD

Дата: Вторник, 01.09.2015, 16:16 |
Сообщение № 9

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

_Boroda_, Ваш вариант на второй строке ошибается automation Error. Я в этом ничего не смыслю, но кажется ADSystemInfo будет работать только при наличии настроенной Active Directory.

 

Ответить

_Boroda_

Дата: Вторник, 01.09.2015, 16:17 |
Сообщение № 10

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

у каждого приложения офиса есть возможность настроить отдельное имя пользователя.

Не-а. Они взаимосвязаны. Измени в Ворде и оно изменится в Excele.


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

EvgenyD

Дата: Вторник, 01.09.2015, 16:20 |
Сообщение № 11

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

У меня эти сведения нашлись в ветке реестра:
HKEY_USERSS-1-5-21-1838117663-2728108920-1439421766-1000SoftwareMicrosoftOffice15.0CommonIdentityIdentitiesdc7cdd78f0fa498e_OrgId

 

Ответить

_Boroda_

Дата: Вторник, 01.09.2015, 16:26 |
Сообщение № 12

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

nilem

Дата: Вторник, 01.09.2015, 20:09 |
Сообщение № 13

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

не уверен, но вот это не подойдет?:
[vba]

Код

MsgBox Environ(«UserName»)

[/vba]


Яндекс.Деньги 4100159601573

 

Ответить

Manyasha

Дата: Вторник, 01.09.2015, 21:28 |
Сообщение № 14

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

Вот еще вариант (где нашла, уже не помню), вдруг подойдет:
[vba]

Код

Declare Function WNetGetUserA Lib «mpr.dll» (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long

[/vba][vba]

Код

Function GetUserName() As String
       Dim sUserNameBuff As String * 255
       sUserNameBuff = Space(255)
       Call WNetGetUserA(vbNullString, sUserNameBuff, 255&)
       GetUserName = Left$(sUserNameBuff, InStr(sUserNameBuff, vbNullChar) — 1)
End Function
Sub tt()
MsgBox GetUserName
End Sub

[/vba]
и еще тут есть пример, правда по-моему тоже самое, что и я написала


ЯД: 410013299366744 WM: R193491431804

 

Ответить

EvgenyD

Дата: Вторник, 01.09.2015, 22:39 |
Сообщение № 15

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Manyasha, спасибо это уже пробовал. Увы, выдает «Евгений», а хотелось бы то, что я в сообщении №4 прикреплял.

 

Ответить

anvg

Дата: Среда, 02.09.2015, 08:39 |
Сообщение № 16

Группа: Друзья

Ранг: Ветеран

Сообщений: 581


Репутация:

271

±

Замечаний:
0% ±


2016, 365

Доброе время суток
Скорее всего предложенными средствами так или иначе возвращается имя пользователя, вошедшего в систему Windows. Вам же нужна данные учётной записи подключения к Office 365. Скорее всего в объектной модели Excel такого нет (Может что есть в объектной модели Microsoft Office Object Library). Можно попытаться, используя Using Excel to Retrieve Office 365 Reporting Data — хотя есть вопрос — захотите ли вы светить данные входа администратора Offce 365, получить информацию если она там есть о подключенных пользователях и, если есть, с какого компьютера они подключены. Увы, сообщить что-то детальнее не могу — не имею установленного Office 365.

Цитата

HKEY_USERSS-1-5-21-1838117663-2728108920-1439421766-1000SoftwareMicrosoftOffice15.0CommonIdentityIdentitiesdc7cdd78f0fa498e_OrgId

Интересно, а в ветке залогиневшегося к Office 365 текущего пользователя Windows HKEY_CURRENT_USERSoftwareMicrosoftOffice15.0CommonIdentityIdentities — ничего нет?

Сообщение отредактировал anvgСреда, 02.09.2015, 08:46

 

Ответить

EvgenyD

Дата: Среда, 02.09.2015, 09:15 |
Сообщение № 17

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

anvg, Вы правы, по этому пути находятся такие же данные как и в указанном мной ранее.
Приведенную статью еще не читал, сяду вечером, т.к. это надолго (с инглишем плохо).

 

Ответить

anvg

Дата: Среда, 02.09.2015, 11:07 |
Сообщение № 18

Группа: Друзья

Ранг: Ветеран

Сообщений: 581


Репутация:

271

±

Замечаний:
0% ±


2016, 365

Цитата

по этому пути находятся такие же данные

Не могли бы вы скинуть экспортированную ветку этого раздела реестра, естественно, изменив сами имена, логины, в силу их конфиденциальности? Вдруг там есть какой-нибудь идентификатор активного пользователя, тогда требуемую информацию можно будет попытаться извлечь из реестра.
Если будете экспортировать, то сделайте это при запущенном Excel и выполненном входе в учётную запись Microsoft.

 

Ответить

anvg

Дата: Среда, 02.09.2015, 21:25 |
Сообщение № 19

Группа: Друзья

Ранг: Ветеран

Сообщений: 581


Репутация:

271

±

Замечаний:
0% ±


2016, 365

Можно таким кодом
[vba]

Код

Private Const IdentitiesSubKeyName As String = «SoftwareMicrosoftOffice15.0CommonIdentityIdentities»
Private Function GetIdentitiesNames()
On Error GoTo errHandle
      Const HKEY_CURRENT_USER = &H80000001
      Dim pReg As Object, sNames
      Set pReg = GetObject(«winmgmts:{impersonationLevel=impersonate}!\.rootdefault:StdRegProv»)
      pReg.EnumKey HKEY_CURRENT_USER, IdentitiesSubKeyName, sNames
      GetIdentitiesNames = sNames
Exit Function
errHandle:
      GetIdentitiesNames = sNames
End Function

Public Sub test()
      Const SignParamName = «SigninName», DisplayParamName = «FriendlyName»
      Dim Keys, i As Long, SignName As String, DisplayName As String
      Dim wshShell As Object, sKey As String
      Keys = GetIdentitiesNames
      If Not IsEmpty(Keys) Then
          Set wshShell = CreateObject(«WScript.Shell»)
          For i = LBound(Keys) To UBound(Keys)
              sKey = Keys(i)
              SignName = wshShell.RegRead(«HKCU» & IdentitiesSubKeyName & «» & sKey & SignParamName)
              DisplayName = wshShell.RegRead(«HKCU» & IdentitiesSubKeyName & «» & sKey & DisplayParamName)
              Debug.Print SignName & » === » & DisplayName
          Next
      End If
End Sub

[/vba]
Но остаются два невыясненных вопроса
1. Позволит ли код обратиться к реестру, если это обычный пользователь (если wmi запрещено, то однозначно нет)?
2. Что будет в реестре, если пользователь из под одной учётки Windows более одного раза за сессию подключался к Office 365 под разными именами входа?

Сообщение отредактировал anvgСреда, 02.09.2015, 21:27

 

Ответить

EvgenyD

Дата: Четверг, 03.09.2015, 11:22 |
Сообщение № 20

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

anvg, на Вашем решении и остановлюсь.
Протестировал на 5 машинах пользователей. (Все ОС — Win7, MS Office 365 Business)
При смене учетки, смена значений происходит только после перезапуска приложения (данные в реестр записываются при корректном выходе из приложения, на сколько я понимаю). По пункту 1 протестировать нет возможности.
Прикрепляю файлик с Вашим решением, для возможности быстро попробовать, может еще кто-то протестирует.

 

Ответить

Получение полного имени пользователя Windows макросом VBA

Чтобы получить полное имя пользователя в Windows, можно использовать функцию UserFullName:

Sub ПримерИспользованияUserFullName()
    ПолноеИмяПользователяWindows = WMI_UserFullName
    MsgBox ПолноеИмяПользователяWindows
End Sub

Данная функция использует интерфейс WMI для получения необходимых данных.

Function WMI_UserFullName() As String
    login$ = CreateObject("WScript.Network").UserName    ' читаем логин текущего пользователя

    Set objWMIService = GetObject("winmgmts://./root/CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", , 48)
    For Each objItem In colItems    ' перебираем все учётные записи
        If objItem.Name = login$ Then WMI_UserFullName = objItem.FullName
    Next
End Function

Посмотреть список всех учётных записей пользователей на компьютере можно следующим кодом:

Sub WMI_username()
    Set objWMIService = GetObject("winmgmts://./root/CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", , 48)
    For Each objItem In colItems
        Debug.Print "FullName: " & objItem.FullName
    Next
End Sub

Результат работы этого кода:

FullName: ASP.NET Machine Account
FullName: Учетная запись помощника для удаленного рабочего стола
FullName: CN=Microsoft Corporation,L=Redmond,S=Washington, C=US
FullName:
FullName: VBA Developer

Если же вам нужно получить только логин (имя пользователя) Windows, то код будет заметно проще:
(все 3 способа равнозначны — возвращают один и тот же результат)

Sub ПолучениеИмениПользователяWindows()
 
    ' первый способ (читаем из переменной окружения)
    username1 = Environ("USERNAME")
    Debug.Print "username 1: " & username1
 
    ' второй способ (используем объект WScript.Network)
    username2 = CreateObject("WScript.Network").UserName
    Debug.Print "username 2: " & username2
 
    ' третий способ (читаем значение из реестра Windows)
    key$ = "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionRegisteredOwner"
    username3 = CreateObject("WScript.Shell").RegRead(key$)    ' читаем из реестра
    Debug.Print "username 3: " & username3
 
End Sub

PS: При создании этого макроса была использована программа WMI Code Creator:

  • 47202 просмотра

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

В большинстве онлайн-ресурсов, которые я могу найти, обычно показывают, как получить эту информацию в VBA. Есть ли прямой способ получить эту информацию в ячейке?

Например, так просто, как =ENVIRON('User') (что не сработало)

6 ответов

Лучший ответ

Пример: чтобы просмотреть имя пользователя Windows в ячейке C5, вы можете использовать этот скрипт:

Range("C5").Value = ": " & Environ("USERNAME").


4

Jack
28 Сен 2012 в 06:29

Это отображает имя текущего пользователя:

Function Username() As String
    Username = Application.Username
End Function

Свойство Application.Username содержит имя, введенное при установке MS Office.

Введите эту формулу в ячейку:

=Username()


4

rolacher
20 Ноя 2017 в 22:08

Без макроса VBA вы можете использовать эти советы, чтобы получить имя пользователя из пути:

=MID(INFO("DIRECTORY"),10,LEN(INFO("DIRECTORY"))-LEN(MID(INFO("DIRECTORY"),FIND("",INFO("DIRECTORY"),10),1000))-LEN("C:Users"))


11

sangorys
10 Дек 2018 в 13:28

Если вы не хотите создавать UDF в VBA или не можете, это может быть альтернативой.

=Cell("Filename",A1) это даст вам полное имя файла, из которого вы можете получить имя пользователя примерно так:

=Mid(A1,Find("",A1,4)+1;Find("";A1;Find("";A1;4))-2)


Эта формула запускается только из ранее сохраненной книги.

Вы должны начинать с 4-й позиции из-за первой косой черты от диска.


5

Rafa Barragan
22 Мар 2016 в 22:34

Самый простой способ — создать макрос VBA, который обертывает эту функцию, например:

Function UserNameWindows() As String
    UserName = Environ("USERNAME")
End Function

Затем вызовите его из сотового:

=UserNameWindows()

Дополнительные сведения и другие способы см. В этой статье.


3

Lance Roberts
4 Авг 2011 в 02:51

Цитата
Сообщение от IvanOK
Посмотреть сообщение

чем txt не подходит? (ответ можно)

удобней будет в экселе, т.к. в .тхт при внесении длинных изменений строка двигается.
например:
Лист1 $D$8 123 Admin
Лист2 $D$8 12312312312312312312312313 Admin

и потом, если сразу .xls сохранять, то можно будет фильтровать, анализировать итд. ведь я полагаю, что записи об изменениях будут вносится в одни и те же столбцы!

подскажите пожалуйста, как переконвертировать в .xls файл *если б еще добавить критерий «дата изменения» цены б не было!

Цитата
Сообщение от IvanOK
Посмотреть сообщение

недолжно… значит что то не так сделали в коде

Type mismatch выдает в дебаггере VBA. но это при выделении групп ячеек, и внесении данных как массив (ctrl+enter).
видимо так и задумано, ведь он регистрирует только те изменения, которые были внесены в !одну! ячейку (если я правильно понял).

Добавлено через 7 минут
вообщем, файл .тхт перестает записывать внесенные изменения если будет баг в макросе, даже после дебага получается, если какой нибудь криворукий юзер собьет макрос, то это бесполезно ..

  • Remove From My Forums
  • Вопрос

  • в VBScript пытаюсь создать подключение к excel файлу. но эта книга лежит на сервере, иногда эта книга бывает занята другим пользователем. как
    я могу получить имя пользователя  кто занял данную таблицу? уведомление во вложении. Имя пользователя как зарегистрирован в office

    я могу читать данные о пользователях через aplication.userstatus.  но для этого она должна быть открыта для редактирования нескольким пользователям.
    Как можно узнать кем занята книга для редактирования 

У меня когда-то была похожая задача на работе. Нужно было понять, кто открывает определенную книгу. Сделать это оказалось не так сложно.
Если вы работаете в корпоративной сети, то здесь должно быть просто. Привязываете следующую процедуру к событию открытия книги и ждете наполнения лог файла.

Код
open "somefile.txt" for append as #1
print #1, environ("username") + " " + cstr(date)
close

Должно выполняться несколько условий.
1. «somefile.txt» находится на сетевом диске и доступен для редактирования всеми пользователями искомого файла.
2. Имя пользователя будет опознаваться, если оно задано в аккаунте (в корпоративной сети обычно так и есть).
3. Файл должен открываться с включенными макросами.

При желании то же самое можно сделать, например, для закрытия файла.
Стоит отметить, что у каждого метода есть свои недостатки, я не стал писать код с разного рода исключениями и усложнениями, потому что часто написанного достаточно.
Удачи!

При разработке скриптов для тех или иных задач, иногда программе требуется получить информацию о пользователе из ActiveDirectrory, который в данный момент эту программму запустил.

Например, запустив xls файл под учетной записью Петрова, мы можем исправлять только те строки где ответственным стоит Петров.

Напишем функцию VBA которая выдает полное ФИО сотрудника, на чьем компьютере запущена программа

Dim objAD, objUser As Object

Public Function UserName()

    Set objAD = CreateObject(«ADSystemInfo»)

    Set objUser = GetObject(«LDAP://» & objAD.UserName)

    UserName = objUser.DisplayName

End Function

Вместо аттрибута DisplayName в строке UserName = objUser.DisplayName мы можем написать любой другой, который нам надо получить. Электронный адрес, номер кабинета, должность и так далее. Аттрибутов достаточно много и более полный список представлен в материале Карточка сотрудника Active Directory через Excel

Понравилась статья? Поделить с друзьями:
  • Как определить площадь под графиком в excel
  • Как определить перенос строки в excel
  • Как определить первую букву в excel
  • Как определить пароль в excel
  • Как определить пароль word