У нас есть электронная таблица на общем диске, которую обновляет один человек, а остальные читают. Я был почти уверен, что когда мы будем использовать Excel 2003, если автор обновит электронную таблицу, Excel уведомит пользователя и перезагрузит. Похоже, что в Excel 2010 этого не происходит, по крайней мере, не автоматически, поэтому автор отправляет электронное письмо с информацией об изменениях, а затем мне нужно закрыть файл и заново открыть его. Есть ли где-нибудь кнопка, которая просто перезагрузит файл одним щелчком мыши или, что еще лучше, автоматически обнаружит изменения и отобразит их (файл заблокирован для меня, я могу только прочитать его, чтобы не беспокоиться о потере изменений)?
1 ответ
Я думаю, что это может зависеть от того, какое хранилище общих файлов вы используете.
Конечно, 2010 год делает то, что вы предложили, произошло в 2003 году. Если у одного человека открыт файл, второму сообщают, что он открыт и доступен только для чтения. Им также должно быть предложено, чтобы они были уведомлены, когда исходный пользователь закрывает файл. Когда это происходит, Excel предлагает перезагрузить файл в режиме чтения-записи.
Однако это может не всегда работать. Я часто видел, что это не в состоянии сделать что-либо или некоторые из этих вещей, и это находится на сетевом ресурсе Windows. Использование более старых версий серверов Windows или Linux SAMBA может оказать большее влияние. Наличие медленной или ненадежной сети, безусловно, повлияет на это. Вы также можете обнаружить, что блокировка никогда не снимается, мы тоже это видим.
Боюсь, я не знаю простого ответа на ваш вопрос. Помимо выполнения некоторого умного программирования для отслеживания изменений даты файла и появления диалогового окна с предупреждением. Я думаю, что это можно сделать с помощью файла PERSONAL.XLSM и соответствующих макросов.
ОБНОВИТЬ:
От вопроса переполнения стека: Excel VBA, чтобы открыть файл Excel без сохранения.
Sub ReOpen()
Application.DisplayAlerts = False
Workbooks.Open ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
Application.DisplayAlerts = True
End Sub
Вы можете поместить это в личную макрокоманду, назначить ярлык и / или пользовательскую запись ленты. По крайней мере, это позволяет вам перезагрузить вручную.
Application.OnTime
позволяет запустить некоторый код после установленного периода. См. Стиль VBA Macro On Timer для запуска кода каждые заданное количество секунд, т. Е. 120 секунд, для получения более подробной информации. Установите таймер, когда вы загружаете рабочую книгу, и он будет перезагружаться каждые x секунд.