Проблемы

Когда Microsoft Excel загружает надстройку службы автоматизации в режиме редактирования ячейки, Excel завершается сбоем. Эта проблема возникает только с надстройками службы автоматизации, которые были загружены по запросу в Excel.

Причина

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

  • Программное изменение текущего выделенного фрагмента. Пример:

    Application.ActiveSheet.Range("A1").Select
  • Вызовите свойство или метод элемента в коллекции Windows. Пример:

    Application.ActiveWindow.Zoom = 200
  • Измените параметр Excel, например режим вычисления. Пример:

    Application.CalculationMode = xlManual

Все эти элементы являются примерами попыток кода изменить среду Excel, книгу или лист. Эти типы действий запрещены в режиме редактирования.

Решение

Не выполняйте описанные выше действия во время загрузки надстройки. Методы надстроек, вызываемые во время загрузки, включают метод Initialize, а если надстройка службы автоматизации реализует интерфейс IDTExtensibility2, методы OnConnection и OnStartupComplete.

Статус

Корпорация Майкрософт подтвердила, что это ошибка в продуктах Майкрософт, перечисленных в начале этой статьи.

Дополнительная информация

Действия по воспроизведению проблемы

  1. Запустите новый проект ActiveX DLL в Visual Basic.

  2. В меню Проект выберите пункт Свойства Project1. Измените имя проекта на TestAddIn и нажмите кнопку ОК.

  3. Добавьте следующий код в модуль кода для Class1:

    Private Sub Class_Initialize()    MsgBox "Class_Initialize"End Sub
  4. Сборка TestAddIn.dll.

  5. В Excel запустите новую книгу.

  6. В Microsoft Office Excel 2003 или Microsoft Excel 2002 выполните следующие действия.

    1. В меню Сервис наведите указатель мыши на пункт Надстройки, а затем выберите пункт Автоматизация.

    2. В списке щелкните TestAddIn.Class1 и нажмите кнопку ОК.

    3. В диалоговом окне Надстройки нажмите кнопку ОК.

    В Microsoft Office Excel 2007 выполните следующие действия.

    1. Нажмите кнопку Microsoft Office и выберите ПунктПараметры Excel.

    2. Перейдите на вкладку Надстройки .

    3. В списке Управление щелкните Надстройки Excel, а затем нажмите кнопку Go.

    4. В диалоговом окне Надстройки щелкнитеАвтоматизация.

    5. В списке щелкните TestAddin.Class1 и нажмите кнопку ОК.

    6. Нажмите кнопку ОК.

  7. Введите =a в любой ячейке. Появится окно сообщения с текстом "Class_Initialize".

  8. Нажмите кнопку ОК, чтобы закрыть окно сообщения. Через несколько секунд Excel завершается сбоем.

Ссылки

Для получения дополнительных сведений щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

291392 INFO: надстройки COM и надстройки службы автоматизации Excel

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.