Excel сбой иногда при закрытии из общего сетевого расположения

Эта проблема будет звучать широкой и неспецифичной, но я пробовал много вещей и не знаю, куда еще обратиться.

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

Все работает отлично, за исключением того, что он часто сбой, когда пользователь закрывает Excel, говоря: "Excel перестает работать". Он сбрасывает все открытые файлы excel, так что это очень расстраивает.

Эта ошибка возникает только при открытии файла из общего сетевого расположения. Я никогда не испытывал этого, работая локально.

Отсутствует исполняемый код VBA.BeforeClose, который может мешать. В рабочей книге я должен установить два разных файла CSV и скопировать данные из них.

Я прошел через каждый модуль и подпрограмму, чтобы узнать, вносит ли кто-либо из них в катастрофу, - но иногда рабочая книга может выходить из строя при закрытии без запуска кода VBA (вне кода Workbook.Open)

Кроме того, он никогда не будет аварийно завершен в режиме "Только для чтения" (главный файл всегда доступен только для чтения) - только после того, как пользователь сохранил копию где-нибудь, начнется сбой.

Есть ли у кого-нибудь какие-либо советы или идеи о том, где я могу продолжить устранение этой проблемы? Работая над этим навсегда, собираюсь нанять специалиста, если я не могу решить в ближайшее время. Спасибо!

** edit 4/15 - просто обновление, продолжающее поиск ответа, если у кого есть решение. Единственное, что я могу найти, связанное с проблемой, - это ссылки на файлы на общем сетевом диске. После закрытия, есть ли причина, по которой кто-либо может подумать, что может вызвать сбой?

Ответ 1

Трудно сказать для этого типа проблемы. Я думаю, что это случай проб и ошибок для вас.

Вначале я бы попытался выполнить следующие действия.

  • Попробуйте очиститель кода в вашей книге Excel. Это, например, http://www.appspro.com/Utilities/CodeCleaner.htm
  • Я бы подумал о том, чтобы восстановить книгу с нуля, если это возможно, и вернуть код обратно. Я бы сохранил код в текстовых файлах и переделал модули, классы, листы с нуля.
  • Я бы очистил ваш каталог temp. Excel сохраняет объекты VBA в каталоге temp. Если он становится слишком большим, он вызывает проблемы.
  • Я бы не проверял никаких добавлений, которые потенциально могут повлиять на вещи. Попробуйте удалить любое неиспользуемое добавление для минимальной сборки.
  • В прошлом у меня были проблемы с некоторыми библиотеками, которые были ранними, но это было больше с открытием книг, которые вызывали исключения. Возможно, вы могли бы попытаться удалить ссылки и опоздать на привязку своих объектов - считая, что вы не используете события в этих объектах. Поэтому вместо использования Dim x как SomeObject используйте CreateObject ( "...." ) и удалите ссылки на библиотеки.
  • Я также посмотрел бы в средстве просмотра событий Microsoft, чтобы узнать, сможете ли вы получить дополнительную информацию. Конкретное исключение может помочь вам в правильном направлении.

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

Надеюсь, что это поможет.

Ответ 2

Откройте новый экземпляр Excel, перейдите к своему файлу, нажмите один раз, щелкните стрелку вниз на кнопке "Открыть", нажмите "Открыть и восстановить". Помогает ли это?

Ответ 3

Одна из причин может быть вызвана AutoRecover. Когда AutoRecover сохраняет резервную копию, а пользователь также пытается сохранить, существует очень высокая вероятность того, что Excel сработает для файла по сетевому пути. AutoRecover по умолчанию работает каждые 10 минут, что также довольно часто. Я не особо уверен, почему он сбой, может быть из-за латентности сети.

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

Надеюсь, что это поможет.

Ответ 4

Я использую Excels с Share-диском тоже в своей организации... Могут быть много причин и зависит от используемого вами диска совместного использования. Если вы используете общий диск, который основан на сети и несовместим с макросами, он будет зависеть от Excel. Это в основном проблема с точкой доступа к офисам.

Также вам нужно сократить код и использовать явную опцию Option в коде VBA и описать все переменные. Когда-то из-за отсутствия определенных переменных он перестанет работать, и excel застрянет.

Также вам нужно отключить ADD-INS в excel, чтобы он работал быстрее. Если вы можете делиться кодом, люди могут лучше сказать, почему он не работает отлично. Если вы можете поделиться тем, какой тип диска Share вы используете, мы можем проверить это также, потому что я столкнулся с одним и тем же в прошлом, и я работал над своим кодом и снова делил диск.