powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Как узнать кем открыт файл для чтени\записи?
24 сообщений из 24, страница 1 из 1
Excel. Как узнать кем открыт файл для чтени\записи?
    #35326397
Gelo_R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сервере лежит эксель-файл. Если на другой машине этот файл открыли первыми, то я имею возможность только чтения. Как програмно узнать с какой машины открыт это файл для чтения записи?
(этот файл открываэтся в макросе програмно)

Спасибо.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35327610
Chelovek Tapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+1
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35328032
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пложи рядом текстовый файл и пускай макрос записывает данные в этот файл.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35328104
Gioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте - Tools - Share Workbook, это даёт возможность другим юзерам совместо работать.
Но когд одновременно двое или более юзеров будут редактировать одну и тоже ячейку, возникнут ошибки.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35328557
Chelovek Tapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor
Пложи рядом текстовый файл и пускай макрос записывает данные в этот файл.


Вы считаете это удобным, если да, то при каких условиях?
Предположим обрабатывает программа n-файлов (много) в разных папках, 5 из которых были открыты. Значит после обработки останется 5 txt файлов. Что с этим делать, учитывая то, что надо файлики дальше обрабатывать?

Gioch
Попробуйте - Tools - Share Workbook, это даёт возможность другим юзерам совместо работать.
Но когд одновременно двое или более юзеров будут редактировать одну и тоже ячейку, возникнут ошибки.


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


Мне представляется, что удобнее попросить человека закрыть файл (тем более они все сидят в одной комнате).
Вот когда пытаешься открыть файл ручками, открытый кем-то еще, то появляется сообщение "Редактирование ... запрещено пользователем XXX ..." , отсюда вывод! можно ведь программно как-то узнать кем открыт файл. Искал в API функциях, не нашел.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35328705
Gioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Общий доступ приемлимым когда у одного открыт файл а другой редактирует и не надо просить чтобы открывший первым файл закрыл его.
При общем доступе можно дать разрешения юзерам и узнать кто конектится легко, просто посмотреть Edit - Окно - "Who has this book now open".
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35328751
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chelovek Tapok vkodor
Пложи рядом текстовый файл и пускай макрос записывает данные в этот файл.


Вы считаете это удобным, если да, то при каких условиях?
Предположим обрабатывает программа n-файлов (много) в разных папках, 5 из которых были открыты. Значит после обработки останется 5 txt файлов. Что с этим делать, учитывая то, что надо файлики дальше обрабатывать?

На неординарный ник, фантазии хватило, а вот на удаление txt после использования нет? И необязательно 5 файлов, достаточно одного.


Chelovek Tapok
Вот когда пытаешься открыть файл ручками, открытый кем-то еще, то появляется сообщение "Редактирование ... запрещено пользователем XXX ..." , отсюда вывод! можно ведь программно как-то узнать кем открыт файл. Искал в API функциях, не нашел.
Вывод неправильный. Узнать что файл занят - это можно, а вот кем занят - это невозможно.
Если найдешь способ, дай знать, я не нашел, хотя искал долго.
Если ли какое-то граничное количество подключений пользователей
Проверка, откыт лифайл???

P.S. Если я не ошибаюсь, в сообщении "Редактирование ... запрещено пользователем XXX ..."
XXX - это то что прописано в поле "Имя пользования" на вкладке "Общие" в меню "Сервис-Параметры..."
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35329338
Chelovek Tapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gioch
Общий доступ приемлимым когда у одного открыт файл а другой редактирует и не надо просить чтобы открывший первым файл закрыл его.
При общем доступе можно дать разрешения юзерам и узнать кто конектится легко, просто посмотреть Edit - Окно - "Who has this book now open".


Что такое общий доступ мне известно, но работать таким образом не удобно (причина была указана ранее). Проще всем пользователям дать доступ только на чтение и, определенным дать возможность править

vkodor
На неординарный ник, фантазии хватило, а вот на удаление txt после использования нет? И необязательно 5 файлов, достаточно одного.

Вы меня не правильно поняли. Чтобы файл txt удалить, данные из него (прежде) надо перенести в файлы .xls, которые открыты будут пользователями еще неизвестно сколько. А работа такова, что нельзя идти дальше, пока данные не окажутся в файлах xls.

vkodor
Вывод неправильный. Узнать что файл занят - это можно, а вот кем занят - это невозможно.

Вы опять меня не понимаете(может и моя вина, что не подробно объясняю).

Есть файл 1.xls на общем сетевом ресурсе, который открыл пользователь Иванов.
Я пытаюсь у себя на компьютере открыть этот файл ручками и выскакивает сообщение
"Файл уже используется
Редактирование 1.xls запрещено пользователем Иванов.
Откройте только для чтения или ....."
Как мне видится, то есть некая библиотека, благодаря которой можно получить данные об Иванове программно (как никак сообщение выскочило с этой информацией).

vkodor
P.S. Если я не ошибаюсь, в сообщении "Редактирование ... запрещено пользователем XXX ..."
XXX - это то что прописано в поле "Имя пользования" на вкладке "Общие" в меню "Сервис-Параметры..."

Ошибаетесь. Пропишется имя пользователя application на вашем компьютере.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35329346
Chelovek Tapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor
Если ли какое-то граничное количество подключений пользователей
Проверка, откыт лифайл???

А ссылки еще посмотрю... (спасибо)
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35329813
Gelo_R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ваши отклики. Из всего этого понял, что задачку с наскока нерешить. Поэтому думаю решить в обход. Вместо текствого файлика буду использовать этотже файл. только информацию записывать в каком нибудь пользовательском свойстве. При открытии проверять, если имею возможность для записи - буду вписывать в определенное свойство имя пользователя. и тутже сохранять чтоб было доступно для чтения с других машин. Видно ничего лучшего придумать пока нельзя.

Всем спасибо.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35330292
Chelovek Tapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gelo_R
Поэтому думаю решить в обход. Вместо текствого файлика буду использовать этотже файл. только информацию записывать в каком нибудь пользовательском свойстве. При открытии проверять, если имею возможность для записи - буду вписывать в определенное свойство имя пользователя. и тутже сохранять чтоб было доступно для чтения с других машин. Видно ничего лучшего придумать пока нельзя.


Кстати, может проще записывать адрес файла и пользователя в файл txt (т.к. он будет вешать меньше чем файл excel)?
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #35330479
ChelovekTapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон! Весить меньше...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Excel. Как узнать кем открыт файл для чтени\записи?
    #36771196
solsolsol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите, что с опозданием... но может кому то еще понадобится
Private Sub Workbook_Open()
If ActiveWorkbook.ReadOnly Then
msgbox "Открыта только для чтения"

End If
End Sub
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36849548
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gelo_RСпасибо за ваши отклики. Из всего этого понял, что задачку с наскока нерешить. Поэтому думаю решить в обход. Вместо текствого файлика буду использовать этотже файл. только информацию записывать в каком нибудь пользовательском свойстве. При открытии проверять, если имею возможность для записи - буду вписывать в определенное свойство имя пользователя. и тутже сохранять чтоб было доступно для чтения с других машин. Видно ничего лучшего придумать пока нельзя.

Всем спасибо.Довольное оригинальное решение. Сам сталкивался с такими проблемами.
И часто бывали глюки, что пишет к примеру, что файл открыт Ивановым, а на самом деле открыт Васечкиным (при том, что у пользователей в настройках Excel указаны правильные ФИО), в результате только ходка к админам помогает найти кем-же на самом деле открыт файл.
Есть подозрения, что при некоторых глюках, Excel тупо показывает, кто последним сохранил файл, а кем он реально открыт, он и сам не знает.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36852306
Pavel Berezin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда впринципе можно макрос написать, который через API-вызов например вычитывал бы имя машины/Login name/IPшник из системного реестра запустившего пользователя. И складывать их например в Workbook.Property. Или на отдельный worksheet.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36852680
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel Berezinтогда впринципе можно макрос написать, который через API-вызов например вычитывал бы имя машины/Login name/IPшник из системного реестра запустившего пользователя. И складывать их например в Workbook.Property. Или на отдельный worksheet.штука реально полезная и интересная. реализовал так, вставляю во все отчеты =)))
пихаем это в Книгу
Код: plaintext
1.
2.
3.
Private Sub Workbook_Open()
    'ведение лога
    UserLog
End Sub
непосредственно код в модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function WNetGetUserA Lib "mpr.dll" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
'сетевое имя компьютера
Function GetComputerName() As String
Dim sBuffer As String *  255 
If GetComputerNameA(sBuffer,  255 &) <>  0  Then
GetComputerName = Left$(sBuffer, InStr(sBuffer, vbNullChar) -  1 )
End If
End Function
'имя пользователя
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 UserLog()
Dim nLogtxt As String

nLogtxt = "G:\PROJECTS\LogData" & "\" & Replace(ThisWorkbook.Name, ".xls", ".txt")

    Open nLogtxt For Append As # 1 
        Print # 1 , Application.UserName & " -- " & Now & " -- " & GetComputerName & " -- " & GetUserName
    Close # 1 
End Sub
хорошо ещё ставить на событие сохранения книги процедуру программного скрытия всех листов, чтобы у пользователя не оставалось шансов, кроме включения макросов. одновременно с этим в тихую дать пользователям доситуп к какой-нить незаметной папочке, где всё это будет вестись...
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36853785
Pavel Berezin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а зачем в лог-файл пихать? Чем отдельный листик в тойже книге не устраивает (скрыть его накрайняк, если хочется конфиденциальности)?
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36853879
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel Berezinа зачем в лог-файл пихать? Чем отдельный листик в тойже книге не устраивает (скрыть его накрайняк, если хочется конфиденциальности)?потому, что книгу надо сохранять
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36853978
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я сделал так, первый пользователь который открыл файл , прописывается его ip в скрытый лист в определенную ячейку, если втрой открыл то выскакивает сообщение что файл открыт (ляляля) впр + таблица соответствий указывает кто открыл
при первом открытии происходит определение ип и сохранение файла
при закоытии ип удаляется
если интересно выложу саму процедуру
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36856686
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitryя сделал так, первый пользователь который открыл файл , прописывается его ip в скрытый лист в определенную ячейку, если втрой открыл то выскакивает сообщение что файл открыт (ляляля) впр + таблица соответствий указывает кто открыл
при первом открытии происходит определение ип и сохранение файла
при закоытии ип удаляется
если интересно выложу саму процедуруКак я понимаю, макросы самого-же документа считывают при открытии информацию со скрытого листа и выводят сообщение, кем документ был открыл?
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #36892739
barsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Реализация должна быть такая (но надо дружить с сисадмином)
1. Сделать запрос на сервак где лежит файл об открытых файлах
2. Найти в списке тот который пытаемся открыть
3. Вывести нужную информацию
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Excel. Как узнать кем открыт файл для чтени\записи?
    #39536399
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorВывод неправильный. Узнать что файл занят - это можно, а вот кем занят - это невозможно.
Если найдешь способ, дай знать, я не нашел, хотя искал долго.
По-моему, все-таки возможно.
Когда файл открывается в Excel, то Excel создает в том же каталоге файл с таким же именем, но добавляя "~$", например, "~$ИмяФайла.xlsx". В этот файл Excel пишет имя пользователя, открывшего файл. Иногда в результате сбоя файл "~$ИмяФайла.xlsx" не удаляется с диска, что не позволяет редактировать исходный файл, т.к. Excel думает, что файл открыт.

Т.е. чтобы узнать кто открыл файл, нужно выудить имя этого пользователя из файла "~$ИмяФайла.xlsx".

Долго не тестировал, набросок кода выложил здесь:
https://social.msdn.microsoft.com/Forums/office/en-US/5890cc5d-04cd-4c57-aebe-dec1d6c3f902/opening-excel-from-access-with-vba-when-excel-is-already-open?forum=accessdev
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #39536653
aquaman12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильнее будет определить владельца лок-файла.

Читать этот файл нет смысла.
Там нет ни имени компа, ни логина.
Только имя пользователя, которое ввели при первом входе - а это эксель и так показывает.
...
Рейтинг: 0 / 0
Excel. Как узнать кем открыт файл для чтени\записи?
    #39536724
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aquaman12Только имя пользователя, которое ввели при первом входе - а это эксель и так показывает.
Да, Excel показывает, все верно. Но если не нужно, чтобы это делал Excel, а просто нужно знать как он это делает, откуда он берет данные.

Считайте это ответом на вот этот вопрос:
Chelovek TapokВот когда пытаешься открыть файл ручками, открытый кем-то еще, то появляется сообщение "Редактирование ... запрещено пользователем XXX ..." , отсюда вывод! можно ведь программно как-то узнать кем открыт файл.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Как узнать кем открыт файл для чтени\записи?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]