Страницы: 1
RSS
Проверка открытия файла другим пользователем
 
Здравствуйте!  
У меня такой вопрос.  
Имеется некоторое количество пользователей, которые готовят однотипную информацию и помещают ее в один файл xls на общем диске. Когда пользователи готовят информацию прямо в общем файле, это отнимает много времени. Решение – пользователи готовят данные в своих файлах такого же формата, а готовые данные отправляют на сетевой файл (файл открывается на короткое время, в него макросом копируются данные, потом файл сохраняется и закрывается). Однако, если файл открыт другим пользователем, то его редактирование будет невозможно.  
Я пробовал выяснить это через текущие атрибуты общего файла, но не сработало.  
Не подскажете, каким образом можно определить, что файл xls, находящийся на общем сетевом диске, открыт другим пользователем и, соответственно, не доступен для записи?  
Большое спасибо!
 
отдельный файл.    
0) проверяете есть ли файл открыт.txt  
Если да то 0), если нет то 1).  
1) создаете файл открыт.txt  
 
пишите свои данные в нужный файл  
 
2) удаляете файл.  
 
Или используйте: PALO Jedox, SharePoint списки, или пишите в СУБД, и считывайте из СУБД.  
 
Бюджетирование пишите?    
Обращайтесь переведу на PALO, от 50 до 100 тыс. 20 пользователей без проблем в один файл пишут. Адрес найдете в форуме
 
Я правильно понял, что в общий файл нужно добавить макрос, который при открытии файла будет создавать файл Открыто.txt, а при закрытии файла - удалять его?  
Просто и гениально:))))  
Спасибо!!!  
А насчет PALO Jedox - я и слов-то таких незнаю:)  
 
У меня не бюджет, просто банальная информация по сделкам в работе, которая исполнителями постоянно корректируется.    
Еще раз благодарю:)
 
Сейчас сообразил - а если пользователь открыл файл с отключенными макросами, то способ ведь не сработает? :(
 
Этот открыто.тхт можно создавать тем макросом, который обновляет данные в общем файле. Т.е. перед открытием создаёт открыто.тхт и открывает файл. А общий файл открывать для просмотра другим макросом, который будет делать его копию и открывать её, например.
 
Hugo, спасибо, но такой способ сработает, если кто-то открыл общий файл посредством макроса в файле пользователя. Но если он открыл общий файл вручную, то файл Открыто.txt не будет создан, соответственно, будет считаться, что общий файл доступен для записи.  
 
Я тут подумал (извините, если глупость скажу:), а что если в общем файле создать ячейку с формулой типа А1=ТДАТА() ? И взять значения из этой ячейки без открытия файла.    
Если файл кем-то открыт, то значение ячейки будет равно текущему времени.  
А если закрыт, то там будут храниться дата и время на момент последнего сохранения файла, т.е. значение будет меньше текущего времени. Или не так?  
 
The_Prist, спасибо! Я, правда, пока только начал постигать азы, но попробую разобраться:)
 
Ну понадобятся бюджеты - Обащайтесь )))
 
{quote}{login=leo037}{date=21.04.2010 04:17}{thema=Проверка открытия файла другим пользователем}{post}Здравствуйте!  
...каким образом можно определить, что файл xls, находящийся на общем сетевом диске, открыт другим пользователем и, соответственно, не доступен для записи?{/post}{/quote}  
Можно таким вот образом:  
 
Function IsFileOpen(FilePathName As String) As Boolean  
 Dim FN%  
 FN = FreeFile  
 On Error Resume Next  
 Open FilePathName For Random Access Read Write Lock Read Write As FN  
 Close FN  
 IsFileOpen = Err <> 0  
End Function  
 
Sub Test()  
 Dim MyFile As String  
 MyFile = "C:\Test.xls"  
 MsgBox "IsFileOpen = " & IsFileOpen(MyFile), , MyFile  
End Sub
 
Все варианты перепробовал. Все получается, если общий файл открыт на моем компьютере. При применении метода с UserStatus ругается. Возможно, потому, что я пока плохо знаю синтаксис). Полдня мучался, а потом все вдруг заработало на предложенном ZVI методе.  
Большое спасибо всем откликнувшимся и особенно ZVI!!!
 
{quote}{login=LEO037}{date=22.04.2010 05:34}{thema=}{post} потом все вдруг заработало на предложенном ZVI методе{/post}{/quote}  
Было бы странно, если не заработало :-)
Страницы: 1
Читают тему
Наверх