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

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


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

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


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


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


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

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


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

P.S. Если я не ошибаюсь, в сообщении "Редактирование ... запрещено пользователем XXX ..."
XXX - это то что прописано в поле "Имя пользования" на вкладке "Общие" в меню "Сервис-Параметры..."
...
Рейтинг: 0 / 0
22.05.2008, 17:13
    #35329338
Chelovek Tapok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
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
22.05.2008, 17:14
    #35329346
Chelovek Tapok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
vkodor
Если ли какое-то граничное количество подключений пользователей
Проверка, откыт лифайл???

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

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


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

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

Всем спасибо.Довольное оригинальное решение. Сам сталкивался с такими проблемами.
И часто бывали глюки, что пишет к примеру, что файл открыт Ивановым, а на самом деле открыт Васечкиным (при том, что у пользователей в настройках Excel указаны правильные ФИО), в результате только ходка к админам помогает найти кем-же на самом деле открыт файл.
Есть подозрения, что при некоторых глюках, Excel тупо показывает, кто последним сохранил файл, а кем он реально открыт, он и сам не знает.
...
Рейтинг: 0 / 0
17.09.2010, 14:38
    #36852306
Pavel Berezin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
тогда впринципе можно макрос написать, который через API-вызов например вычитывал бы имя машины/Login name/IPшник из системного реестра запустившего пользователя. И складывать их например в Workbook.Property. Или на отдельный worksheet.
...
Рейтинг: 0 / 0
17.09.2010, 16:43
    #36852680
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
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
18.09.2010, 20:06
    #36853785
Pavel Berezin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
а зачем в лог-файл пихать? Чем отдельный листик в тойже книге не устраивает (скрыть его накрайняк, если хочется конфиденциальности)?
...
Рейтинг: 0 / 0
18.09.2010, 22:05
    #36853879
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
Pavel Berezinа зачем в лог-файл пихать? Чем отдельный листик в тойже книге не устраивает (скрыть его накрайняк, если хочется конфиденциальности)?потому, что книгу надо сохранять
...
Рейтинг: 0 / 0
19.09.2010, 01:45
    #36853978
R Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
я сделал так, первый пользователь который открыл файл , прописывается его ip в скрытый лист в определенную ячейку, если втрой открыл то выскакивает сообщение что файл открыт (ляляля) впр + таблица соответствий указывает кто открыл
при первом открытии происходит определение ип и сохранение файла
при закоытии ип удаляется
если интересно выложу саму процедуру
...
Рейтинг: 0 / 0
21.09.2010, 09:29
    #36856686
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
R Dmitryя сделал так, первый пользователь который открыл файл , прописывается его ip в скрытый лист в определенную ячейку, если втрой открыл то выскакивает сообщение что файл открыт (ляляля) впр + таблица соответствий указывает кто открыл
при первом открытии происходит определение ип и сохранение файла
при закоытии ип удаляется
если интересно выложу саму процедуруКак я понимаю, макросы самого-же документа считывают при открытии информацию со скрытого листа и выводят сообщение, кем документ был открыл?
...
Рейтинг: 0 / 0
11.10.2010, 14:56
    #36892739
barsnet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
Реализация должна быть такая (но надо дружить с сисадмином)
1. Сделать запрос на сервак где лежит файл об открытых файлах
2. Найти в списке тот который пытаемся открыть
3. Вывести нужную информацию
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
15.10.2017, 02:01
    #39536399
Вакшуль Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
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
16.10.2017, 04:41
    #39536653
aquaman12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как узнать кем открыт файл для чтени\записи?
Правильнее будет определить владельца лок-файла.

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

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


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