Страницы: 1
RSS
Ошибка сохранения книги в общем доступе, конфликт доступа
 
Книга Excel лежит на сервере, содержит макросы, и при этом находится в общем доступе (Рецензирование - Доступ к книге). Существует проблема, книга периодически сохраняется не корректно - Excel сообщает о существующем конфликте доступа. После чего создается временный файл (с ошибками). Так же если ошибка возникла у одного пользователя, тут же по цепочке ошибка проявляется у всех остальных, до тех пор пока все пользователи не закроют полностью книгу и не будет руками очищен список в "Управление доступом к файлу". Книга находится на сервере, все пользователи подключаются к серверу через тонкие клиенты. Права на папку прописаны для каждого пользователя - Полный Доступ. Антивирус на сервере ESET, вроде бы ничего не блокирует. Подскажите с чем может быть связано такое поведение. От количества пользователей вроде бы так же не зависит. Единственное что заметил, так это то, что даже при нормальном сохранении пользователь не всегда удаляется из списка редактирования (см.изображение), и при повторном входе запись дублируется... может есть связь, может прописать в макросе проверку при выходе?
 
Так же иногда файл "сваливается" в режим только для чтения... Пишет что файл заблокирован (см.изображение). Что в целом вообще исключено в режиме общего редактирования, так ведь?
 
hr.al,
1) наличие макросов в документе сразу обязывает антивирус постоянно отслеживать изменения в файле - то есть вмешиваться в качестве нового пользователя, отсюда сбои (у нас таким грешит касперский);
2) если это регулярное явление и файл создавали тем более не Вы, то очистите его от всех имен, даже не удаляемых (на майкрософте есть код);
3) если файл весит более 25-30-ти мб, то такие штуковины неизбежны, ибо самм эксель не очень ладит с общим доступом (правда, более свежие версии лучше, например, 2013);
4) одновременное сохранение сразу двух и более пользователей приводит к конфликту - то есть нужно договариваться о времени сохранения;
5) если какой-то другой документ ссылается на исходник (то есть подтягиваются ссылки, периодически обновляются), то это также является "вторжением" в исходник и будет писать, что файл заблокирован (фамилия может не совпадать, ибо может быть указана последняя их сохранивших, а не актуального).

Вот то, к каким выводам я пришел методом тыка в аналогичной ситуации... :)
Изменено: AlexTM - 27.08.2015 14:53:52
 
Если я правильно понимаю, в целом плохая идея работать с одной книгой excel одновременно большому количеству пользователей? А может есть варианты подключить Excel к базе MS Access, таким образом, чтобы роль юзабельного приложения осталась за Excel, но данные хранились в Access. Т.е. пользователь открывает книгу Excel, она с формой авторизации которая подтыкает ему только его листы, на листах пользователь выполняет стандартную работу с таблицами, в свою очередь таблицы записываются в базу данных и хранятся там. Как-то так... к сожалению наверное немного не внятная формулировка, дело в том, что у нас ограниченный набор приложений, а отчет/журнал построить нужно, вот и выдумываю. Сейчас все работает так как мне нужно: есть книга excel как раз с формой авторизации, есть в книге лист отчета, который собирает и обновляет данные со всех листов пользователей, и все бы ничего, если бы не эти ошибки с конфликтом доступа...
 
Цитата
в целом плохая идея
Даже очень.
Подымаете SQLEXPRESS , он бесплатный.
Таблицы все на сервере,интерфейс в excel
 
Спасибо. Если все же попробовать, все оставить как есть, то вот несколько вопросов:

1. подскажите макрос, который сможет ограничить кол-во одновременных подключений к книге? Т.е. если к книге уже подключено 4-ро пользователей, при открытии показываем форму с сообщением, что превышено количество одновременных подключений - просим повторить попытку позже. Возможно ли так сделать?

2. если один и тот же пользователь пытается подключиться к книге дважды - показываем форму: ваша сессия уже запущенна, обратитесь к администратору

3. а так же отследить если пользователь находится в списке подключенных более 30 минут, на 29 минуте выдать сообщение типа "истекает доступное время сессии, сохраните изменения и перезапустите книгу", если пользователь не делает этого в течении 1 минуты, отключить пользователя от книги

Уважаемые специалисты, скажите, пожалуйста, возможно ли написать такие макросы? И второй вопрос - к сожалению я не смогу этого сделать даже с подсказками, могу ли я попросить Вас помочь мне (если очень сложно сделать это бесплатно, может обсудим вопрос оплачиваемой помощи). Буду признателен за любой ответ/помощь.

Спасибо.
 
Или альтернативный вариант. Можно ли сделать форму авторизации на vba, которая по пользователю открывала бы определенную книгу? Я бы тогда сделал каждому пользователю множество книг и собирал их в одну. Зачем мне форма авторизации? Специфика... сложно объяснить. Но именно на ней все и завязано.

Спасибо.
 
Форму сделать можно.
Сложнее запретить открыть файл помимо формы.
 
RAN, будьте добры, подскажите, пожалуйста вариант такой формы! спасибо.
 
Посмотрите здесь
 
Юрий М, спасибо, я как раз и использую именно этот вариант сейчас, но мне его нужно модифицировать - чтобы эта форма открывала не определенный лист, а именно определенную книгу, возможно ли это?
 
Возможно: в КомбоБокс вместо фамилий список книг и проверкой пароля открываем выбранную. Само открытие книги можно записать макрорекордером - получите практически готовый код. Проверку пароля можно взять по указанной ранее ссылке.
Страницы: 1
Читают тему
Наверх