Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Блокировка повторного открытия файла

Автор Starbirst, 09.12.2016, 13:46:06

« назад - далее »

Starbirst

Ребята! Столкнулся с такой ситуацией: на сетевом диске имеется файл excel. Подскажите, пожалуйста, можно ли поставить блокировку на файл, чтобы избежать одновременного открытия файла разными пользователя, имеющими доступ к файлу? Макросами не владею. Хотелось бы что-то вроде высплывающего окошка: "файл используется другим пользователем, попробуйте позже". И как избежать двойного открытия файла с одного ПК? Т. е. например при попытке дважды открыть один и тот же файл было окошко "невозможно открыть дважды". Спасибо всем откликнувшимся.

Дмитрий Щербаков(The_Prist)

Эта функция присутствует изначально. Перейдите на вкладку Рецензирование -Доступ к книге. Убедитесь, что снята галочка "Разрешить изменять файл нескольким пользователям..."
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Starbirst

Дело в том, что доступ к редактированию необходим каждому пользователю, но, чтобы одновременно не могли открывать и редактировать файл

Дмитрий Щербаков(The_Prist)

#3
Да. И для этого надо обязательно снять общий доступ через меню Excel, как я написал выше. Мы об одном и том же говорим?
Стандартно, если файл не расшарен через Рецензирование, то при попытке открыть другим пользователем появится уведомление, что файл уже открыт другим пользователем и его можно открыть только для чтения.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Starbirst

Режим для чтения открывает файл, а хотелось бы, чтобы файл не был доступен для открытия и просмотра, пока в нем работает другой пользователь

Дмитрий Щербаков(The_Prist)

Цитата: Starbirst от 09.12.2016, 13:46:06Хотелось бы что-то вроде высплывающего окошка: "файл используется другим пользователем, попробуйте позже"
Не совсем понял. Вы хотите, чтобы файл вообще нельзя было открыть? А если у человека просто напросто макросы запрещены?
Если хотите делать надежно - то это не в Excel делается. Если все же в Excel хотите - вот здесь я описывал как это можно сделать и в пределах одного ПК и в сети:
Как проверить открыта ли книга?

Но для этого придется заставлять людей открывать файл только из другого файла.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Starbirst

#6
Файл, на который не могу ввести ограничения по одновременному доступу (открытию), располагается на сетевом диске, он с макросами. Данный файл открывается из базового файла, который тиеется на локальном диске каждого пользователя. Совместный одновременный доступ к файлу хочется запретить, дабы не было ошибок макросов, люди итак в excel не умеют работать, а если возникнут ошибки макросов, вообще паника будет.

A-Michael

Цитировать...люди итак в excel не умеют работать, а если возникнут ошибки макросов, вообще паника будет.
О, как Вы верно подметили. Сколько раз с этим сталкивался: "Я ничего не делал(а), оно само!"
Я - не волшебник, я ещё только учусь...

Дмитрий Щербаков(The_Prist)

Цитата: Starbirst от 10.12.2016, 01:11:26Данный файл открывается из базового файла
И чем тогда решение по ссылке не подходит? Там в конце есть именно Ваш случай.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Starbirst

Дело в том, что кто-то из пользователей на своём рабочем месте открывает файл, кто-то удаленно работает, например, с ноута или планшета. Не каждый понимает, что одновременно открывать файл с макросами не рекомендуется.

Дмитрий Щербаков(The_Prist)

ну как еще Вам объяснить, что НАДО ПРОЧИТАТЬ СТАТЬЮ? Вы читали?
Если сам файл открывается опять же кодом(судя по Вашим словам так и есть) - то там есть ответ. Приведена функция, которая определяет открыт ли файл кем-то еще. Попробовали её использовать? Если да - что не получается, не так происходит, что непонятно?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Alex_ST

Дмитрий, Starbirst в Миру практически одновременно создал кросспост.
Я ему там уже практически всё то же самое, что ты здесь советовал. И другую функцию для проверки статуса книги советовал If GetAttr(ThisWorkbook.FullName) And vbReadOnly Then MsgBox "Файл занят. Зайдите позже"
, но оттуда он исчез.
(К стати, брат-близнец твоей IsBookOpen, но с, ИМХО, более корректной обработкой Err, у меня тоже в копилке лежит, но я его описывать не сталFunction FileIsBusy(File$) As Boolean   ' не открывая файла проверяет, открыт ли он вообще кем-либо
    Dim FN%: FN = FreeFile
    On Error Resume Next
    Open File For Random Access Write Lock Write As #FN
    Close #FN
    FileIsBusy = (Err <> 0)
End Functio
)
Что мешает ему использовать макросы в файле с общим доступом. лежащим на расшаренном сетевом диске, я не знаю...
Скорее всего просто макросы там кривые и на общий доступ не рассчитаны. А IT-шник, эти макросы когда-то написавший, по каким-то причинам дорабатывать файл не хочет или не может.
С уважением, Алексей

Дмитрий Щербаков(The_Prist)

Цитата: Alex_ST от 10.12.2016, 12:45:47более корректной обработкой Err
Да такая же обработка. Более корректно, это если Err.Number использовать. Но т.к. это свойство по умолчанию для данного объекта(как Value для Range) - его можно опустить.
Т.к. функция объявлена As Boolean, то она вернет False в случае, если Err =0 и True во всех остальных случаях :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Starbirst

Ребята, спасибо большое, что вы рткликаетесь на мою проблему. Макросы возможно кривые. Как писал The_Prist я по ночам подворовываю готовые макросы и как могу переделываю их под себя))) Куда деваться, если даже знаний английского нет.

Starbirst

Alex_ST, подскажите код в книге должен быть?

Яндекс.Метрика Рейтинг@Mail.ru