VBA падает без магических остановок при использовании Windows Server 2012 - PullRequest
0 голосов
/ 18 мая 2018

У меня есть файл XLSM с VBA, созданный в Excel 2010 на Windows 7 Pro, и он там работает нормально, но при запуске того же файла в Windows Server 2012 он вызывает сбой Excel 2010 с общим сообщением об ошибке

«Microsoft Excel перестал работать».

Но это становится более странным ...

Что я пробовал до сих пор:

  • Проверенные ссылки Excelто же самое между компьютерами и ни один не помечен как отсутствующий.

  • Проверено: нет вызовов базы данных - существует несколько рабочих книг (одна XLSM, пара XLSX) и тонна кода, но каждый проект статичен и самодостаточен.

  • Используется программно Остановить миллион раз.Я объясню.

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

Он разбился на этой строке в режиме прерывания, затем - нет, затем он не разбился на этой строке в режиме выполнения.Волшебным образом, без изменения этой линии, эти изменения произошли.Единственное, что я изменил, это выставил Стоп до и после, а затем закомментировал Остановки.

Ну, очевидно, я должен был случайно добавить или удалить код, отличный от Stops, из-за которого нарушающая строка начала нормально работать.Выполнение кода продолжалось и прекращалось на более позднем этапе, поэтому я снова старательно сузил его до одной строки, и снова он волшебным образом начал правильно выполнять эту строку и прошел весь путь до конца.Теперь сбоев нет, просто из-за добавления и комментирования Stop.Последующие пробеги тоже в порядке.Резервная копия оригинала по-прежнему вылетает в Excel.

Хотя и загадочно, но это решит проблему, кроме ...

Существует множество похожих файлов XLSM и ихПапки статических проектов на Windows Server разные, и я не могу сделать это для всех, даже если это имеет какой-то смысл, как изгоняются призраки.

Так что мне интересно, есть ли что-то, что яможно сделать с VBA, чтобы он не сталкивался с проблемой?

Что я до сих пор пробовал для этого:

  • Добавлено и закомментированоОстановитесь в нескольких произвольных местах (не тратя час, чтобы сузить точную строку кода).

  • Добавлен новый пустой модуль класса.

  • Скомпилировано.

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

Разработано на ...

Windows 7 Professional ServiceПакет 1, 64-разрядная версия Microsoft Office профессиональный плюс 2010 Excel: 14.0.7192.5000 (32-разрядная версия)

Проблемы с ...

Windows Server 2012 Standard Microsoft OfficeСтандартная версия Excel Excel 14.0.7128.5000 (32-разрядная версия)

...