Джо спросил, есть ли способ определить в макросе, у кого открыта конкретная книга. Он думал об использовании свойства WriteReservedBy, но, похоже, у него нет нужной информации.

К сожалению, определить эту информацию из VBA невозможно — она ​​просто недоступна. Свойство WriteReservedBy не показывает, у кого открыт файл; он показывает, кто сохранил книгу с помощью пароля. Другими словами, когда кто-то сохраняет книгу с возможностью иметь пароль для ее изменения, это файл «WriteReserved». Свойство WriteReservedBy содержит имя человека, который сохранил файл в состоянии WriteReserved.

Если вам нужен только ответ (о том, у кого открыт файл)

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

Другое возможное решение — добавить макрос AutoOpen в каждую книгу, которая записывает на диск временный файл, содержащий имя человека, открывающего файл. Макросу потребуется не только открыть временный файл, но и обработать условия ошибки, например временный файл, который уже открыт. Затем к временному файлу могут получить доступ другие макросы, чтобы увидеть имя, которое он содержит.

Макрос, найденный на следующем сайте, может предоставить другое решение для определения того, у кого открыта конкретная книга:

https://bizintelsolutions.wordpress.com/2015/01/26/who-is-in-excel-xlsx-file/

Еще одно место, где можно найти ответ, — это сайт VBNet. Статья на этой странице содержит код, который можно адаптировать для получения желаемой информации:

http://vbnet.mvps.org/index.html?code/network/netfileenum.htm

Обратите внимание, что код работает только в более старых версиях Windows. Он должен отлично работать в версиях до Windows 7, но осторожнее, когда дело доходит до более поздних версий — вы захотите полностью протестировать его, чтобы убедиться, что он работает в вашей среде.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (9511) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Who_Has_the_File_Open [У кого открыт файл?].