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

Иногда кто-то, кроме первого человека, который отвечает за редактирование файла Excel, открывает этот файл и каким-то образом берет на себя функции записи этого файла, в результате чего человек, который должен вносить изменения, не может сохранить эти изменения.

Это происходило в течение достаточно долгого времени, и я не могу найти решение для этого.

Есть идеи, что происходит?

Офис 2010
Windows 7 Pro x64

3 ответа3

1

Я выбрал другой подход для следующей ситуации. Существует база данных Excel, скажем, DataBase.xls и шаблон Excel Programs.xlt, которые не являются общими и находятся в каталоге сетевого сервера / диска. Каждый пользователь использует копию шаблона программ, поэтому Programs1.xls для первого пользователя и Programsn.xls для n-го пользователя. Правила таковы: Возможно одновременное чтение одновременно. возможна только 1 запись без одновременного чтения (во избежание чтения "наполовину" обновленных записей). Действия чтения и записи стандартизированы и максимально коротки

Я выбрал решение «Рефери / Судья / Арбитр / Арбитр» - я назвал его «Рефери.xls». Это общий файл Excel, который находится в том же вышеупомянутом каталоге и очень мал: он состоит только из 2 полей - счетчика чтения nRead и счетчика записи nWrite. Каждый пользователь, который хочет получить доступ к базе данных, отправляет рефери запрос на чтение или запись.

В случае запроса на чтение рефери проверяет / ждет, пока не будет никаких действий записи (больше) (nWrite = 0), а затем предоставит чтение для этого пользователя, увеличив счетчик nRead на 1. После того, как действие чтения завершено, счетчик nRead уменьшается на 1.

В случае запроса на запись рефери проверяет / ждет, пока больше не будет активных действий записи (nWrite = 0), после этого рефери проверяет / ждет, пока все действия чтения будут выполнены (nRead = 0), а затем предоставляет запрос на запись. и установите счетчик nWrite на 1. После того, как действие записи выполнено, счетчик записи nWrite устанавливается в 0. После этого рефери может удовлетворить новые запросы на чтение и / или запись. Ожидания реализуются с помощью функции "Sleep" в Lib "Kernel32" с шагом 1 секунда (1000 миллисекунд). Шаги также подсчитываются, и после 6 шагов / секунд тайм-аут запроса на чтение истекает, запрос на запись истекает через 10 шагов / секунд, но это сильно зависит от многих факторов и должно быть найдено на практике.

Все это очень хорошо работает в среде Excel 2003, Windows XP с максимум 14 одновременными пользователями. Эти пользователи являются менеджерами, работающими в разных местах на площади 5000 квадратных километров, и используют этот инструмент каждый день для обновления информации о медицинской компетентности, личной информации, назначениях и т.д. Для своих сотрудников (в среднем 15 сотрудников на одного менеджера)

1

Вот возможное исправление: в диалоговом окне «Сохранить как» выберите «Инструменты» -> «Общие параметры», выберите «Только для чтения» и сохраните.

    Диалог «Сохранить как»     Диалоговое окно «Общие параметры» с пометкой «Только для чтения»

Затем каждый раз, когда кто-нибудь открывает файл, он получает это:

«Открыть только для чтения?»диалог

Научите их нажимать «Да», за исключением одного человека, который должен редактировать файл (или его заместителя, в случае отсутствия).

0

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

  • Настроен параметр «Разрешить пользователям редактировать диапазоны» (см. Ленту «Обзор -> Изменения»)
  • Человек 1 не всегда имеет открытый файл или, возможно, если операционная система переходит в режим ожидания, блокировка в Excel снята.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .