Ребята! Столкнулся с такой ситуацией: на сетевом диске имеется файл excel. Подскажите, пожалуйста, можно ли поставить блокировку на файл, чтобы избежать одновременного открытия файла разными пользователя, имеющими доступ к файлу? Макросами не владею. Хотелось бы что-то вроде высплывающего окошка: "файл используется другим пользователем, попробуйте позже". И как избежать двойного открытия файла с одного ПК? Т. е. например при попытке дважды открыть один и тот же файл было окошко "невозможно открыть дважды". Спасибо всем откликнувшимся.
Ребята! Столкнулся с такой ситуацией: на сетевом диске имеется файл excel. Подскажите, пожалуйста, можно ли поставить блокировку на файл, чтобы избежать одновременного открытия файла разными пользователя, имеющими доступ к файлу? Макросами не владею. Хотелось бы что-то вроде высплывающего окошка: "файл используется другим пользователем, попробуйте позже". И как избежать двойного открытия файла с одного ПК? Т. е. например при попытке дважды открыть один и тот же файл было окошко "невозможно открыть дважды". Спасибо всем откликнувшимся.Starbirst
Сообщение отредактировал Starbirst - Пятница, 09.12.2016, 15:30
Что-то я не понял... 1. Если файл НЕ ОБЩЕГО ДОСТУПА, лежащий на сетевом диске, кем-то уже открыт, то при попытке его открыть кем-то ещё и так показывается предупреждение, что файл занят и доступен только для чтения. Этого разве мало? А при попытке дважды открыть один и тот же файл Excel и так отругается, что не может быть одновременно открыто два файла с одинаковыми именами. 2. А если у Вас Excel стоит криво и для каждого открываемого файла запускает отдельный экземпляр приложения, то для нового процесса это будет аналогично тому, что файл занят и доступен только для чтения (см.п.1)
Но если хочется поизвращаться с макросами, то стандартная функция GetAttr Вам поможет. В модуле ЭтаКнига в процедуру Private Sub Workbook_Open() добавьте что-то вроде этого [vba]
Код
If GetAttr(ThisWorkbook.FullName) And vbReadOnly Then MsgBox "Файл занят. Зайдите позже"
[/vba] Правда, встанет проблема: исполнение макросов по умолчанию запрещено и потому юзеры, не знающие, что это такое, его не разрешают в настройках и потому Ваши труды над макросом будут бесполезны.
Что-то я не понял... 1. Если файл НЕ ОБЩЕГО ДОСТУПА, лежащий на сетевом диске, кем-то уже открыт, то при попытке его открыть кем-то ещё и так показывается предупреждение, что файл занят и доступен только для чтения. Этого разве мало? А при попытке дважды открыть один и тот же файл Excel и так отругается, что не может быть одновременно открыто два файла с одинаковыми именами. 2. А если у Вас Excel стоит криво и для каждого открываемого файла запускает отдельный экземпляр приложения, то для нового процесса это будет аналогично тому, что файл занят и доступен только для чтения (см.п.1)
Но если хочется поизвращаться с макросами, то стандартная функция GetAttr Вам поможет. В модуле ЭтаКнига в процедуру Private Sub Workbook_Open() добавьте что-то вроде этого [vba]
Код
If GetAttr(ThisWorkbook.FullName) And vbReadOnly Then MsgBox "Файл занят. Зайдите позже"
[/vba] Правда, встанет проблема: исполнение макросов по умолчанию запрещено и потому юзеры, не знающие, что это такое, его не разрешают в настройках и потому Ваши труды над макросом будут бесполезны.Alex_ST
Это Лена ещё мягко выразилась. Это типичный кросспост. У себя на сайте Дима (The_Prist) уже 2 страницы пытается Starbirst всё объяснить. Пока безуспешно. Starbirst, у вас задача поставлена с ног на голову. Ситуация такая: на сети есть файл, с которым нужно работать нескольким пользователям, но разрешать общий доступ в нём нельзя, т.к. написанные Вами макросы перестают работать. И вместо того, чтобы пытаться проанализировать, что мешает Вашим макросам работать в режиме общего доступа к файлу Вы пытаетесь просто запретить доступ к нему более чем одного пользователя. The_Prist дал Вам ссылку на описание ограничений при работе с файлами общего доступа. Почитайте её. Она на русском языке. Если Ваши макросы делают что-то из списка запрещённых для файлов общего доступа операций, пересмотрите логику работы. Если ничего из запрещённых нет, то значит макросы делают что-то не разрешённое для достижения нужных не запрещённых результатов. И вообще, кросспост ЗДЕСЬ я прекращаю. Одновременно отвечать на один и тот же вопрос на разных сайтах одному и тому же человеку невозможно.
Это Лена ещё мягко выразилась. Это типичный кросспост. У себя на сайте Дима (The_Prist) уже 2 страницы пытается Starbirst всё объяснить. Пока безуспешно. Starbirst, у вас задача поставлена с ног на голову. Ситуация такая: на сети есть файл, с которым нужно работать нескольким пользователям, но разрешать общий доступ в нём нельзя, т.к. написанные Вами макросы перестают работать. И вместо того, чтобы пытаться проанализировать, что мешает Вашим макросам работать в режиме общего доступа к файлу Вы пытаетесь просто запретить доступ к нему более чем одного пользователя. The_Prist дал Вам ссылку на описание ограничений при работе с файлами общего доступа. Почитайте её. Она на русском языке. Если Ваши макросы делают что-то из списка запрещённых для файлов общего доступа операций, пересмотрите логику работы. Если ничего из запрещённых нет, то значит макросы делают что-то не разрешённое для достижения нужных не запрещённых результатов. И вообще, кросспост ЗДЕСЬ я прекращаю. Одновременно отвечать на один и тот же вопрос на разных сайтах одному и тому же человеку невозможно.Alex_ST