Элементы Управления ActiveX Microsoft Excel Отключены?

У меня есть несколько листов Excel, которые используют флажки ActiveX для управления определенной деятельностью. Они работали недавно, но сегодня начали давать ошибки. Меня предупредил об этом коллега, но он все еще работал на моем компьютере. Я сверил его версию Excel с моей, и его версия была новее. Я заметил, что появились новые обновления Windows, поэтому я сделал обновление. После того, как я применил ожидающие обновления, он больше не работает на моем компьютере. Я больше не могу проверять флажки ActiveX и, как часть попытки отладки, похоже, я даже не могу добавить элемент управления ActiveX на любой лист, даже новый лист, больше. Я получаю сообщение об ошибке: "не удается вставить объект."(Я все еще могу добавлять элементы управления формой, но не ActiveX.) Кто-нибудь еще испытывает это после недавнего обновления? Есть предложения?

спасибо,

Майк

11 ответов


из других форумов я узнал, что это связано с обновлением MS и что хорошее исправление-просто удалить файл MSForms.exd из любой подпапки Temp в профиле пользователя. Например:

C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\Word8.0\MSForms.exd

конечно, приложение (Excel, Word...) должен быть закрыт для удаления этого файла.


вот лучший ответ, который я нашел в блоге группы поддержки Microsoft Excel

для некоторых пользователей, формы управления (FM20.dll) больше не работают как ожидается после установки обновлений в декабре 2014 года. Проблемы испытанный в такие моменты, как когда они открывают файлы с существующим VBA проекты, использующие элементы управления forms, попробуйте вставить элемент управления forms в новый рабочий лист или запустить стороннее программное обеспечение, которое может использовать эти комплектующие.

вы можете полученные ошибки, такие как:

"не удается вставить объект "" библиотека объектов недопустима или содержит ссылки для определения объектов, которые не могут быть найдены"

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

чтобы решить эту проблему, необходимо удалить кэшированные версии библиотеки типов управления (файлы расширителей) на клиентском компьютере. Делать этого, вы должны искать ваш жесткий диск для файлов ".ехд" расширение имени файла и удалить все .exd файлы, которые вы найдете. Эти .файлы exd будут повторно созданы автоматически при использовании нового управляет при следующем использовании VBA. Эти файлы extender будут под профилем пользователя, а также может быть в других местах, таких как следующее:

%appdata%\Microsoft\forms

%temp%\Excel8.0

% temp%\VBE

сценарии решения:

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

del %temp%\vbe\*.exd

del %temp%\excel8.0\*.exd

del %appdata%\microsoft\forms\*.exd

del %appdata%\microsoft\local\*.exd

del %appdata%\Roaming\microsoft\forms\*.exd

del %temp%\word8.0\*.exd

del %temp%\PPT11.0\*.exd

дополнительный шаг:

Если шаги выше не разрешают ваша проблема, еще один шаг, который может быть испытания (см. предупреждение ниже):

  1. на полностью обновленной машине и после удаления .exd файлы, откройте файл в Excel с правами редактирования.

    открыть Visual Basic для приложений > изменить проект, добавив комментарий или редактирование в любой модуль кода > отладка > компиляция Виде vbaproject.

    сохранить и снова открыть файл. Тест на разрешение. Если решение принято, предоставьте этот обновленный проект дополнительные пользователи.

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

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

Microsoft в настоящее время работает над этим вопросом. Смотрите блог для новинки.

источник


Он был KB2553154. Microsoft необходимо выпустить исправление. Как разработчик приложений Excel мы не можем перейти на все компьютеры наших клиентов и удалить файлы с них. Нас обвиняют в том, что Microsoft вызвала.


Я разработчик Excel, и я определенно почувствовал боль, когда это произошло. К счастью, мне удалось найти обходной путь, переименовав MSForms.файлы exd в VBA даже когда Excel работает, который также может устранить проблему. Разработчики Excel, который нужно распространять свои электронные таблицы можете добавить следующий код VBA в свои таблицы, чтобы сделать их невосприимчивыми к обновление МС.

поместите этот код в любом модуле.

Public Sub RenameMSFormsFiles() 
  Const tempFileName As String = "MSForms - Copy.exd"  
  Const msFormsFileName As String = "MSForms.exd"  
  On Error Resume Next 

  'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd file  
  RenameFile Environ("TEMP") & "\Excel8.0\" & msFormsFileName, Environ("TEMP") & "\Excel8.0\" & tempFileName 
  'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd file  
  RenameFile Environ("TEMP") & "\VBE\" & msFormsFileName, Environ("TEMP") & "\VBE\" & tempFileName 
End Sub  

Private Sub RenameFile(fromFilePath As String, toFilePath As String) 
  If CheckFileExist(fromFilePath) Then 
      DeleteFile toFilePath  
      Name fromFilePath As toFilePath  
  End If  
End Sub

Private Function CheckFileExist(path As String) As Boolean 
  CheckFileExist = (Dir(path) <> "")  
End Function  

Private Sub DeleteFile(path As String) 
  If CheckFileExist(path) Then 
      SetAttr path, vbNormal  
      Kill path  
  End If  
End Sub    

подпрограмма RenameMSFormsFiles пытается переименуйте MSForms.exd файлы в C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\ и C:\Users\[user.name]\AppData\Local\Temp\VBE\ папки в MSForms-копировать.exd.

затем вызовите подпрограмму RenameMSFormsFiles в самом начале события Workbook_Open.

Private Sub Workbook_Open() 
  RenameMSFormsFiles  
End Sub

электронная таблица попытается переименовать MSForms.exd файлы, когда он откроется. Очевидно, что это не идеальное решение:

  1. пострадавший пользователь по-прежнему будет испытывать ошибки управления ActiveX при запуске кода VBA при первом открытии электронная таблица. Только после выполнения кода VBA один раз и перезапуска Excel проблема устранена. Обычно, когда пользователь сталкивается со сломанной электронной таблицей, реакция коленного рывка-закрыть Excel и попытаться снова открыть электронную таблицу. :)
  2. В MSForms.файлы exd переименовываются каждый раз, когда открывается электронная таблица, даже если нет проблем с MSForms.файлы с расширением EXD. Но электронная таблица будет работать просто отлично.

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

я опубликовал это решение здесь.


С Windows 8.1 я не смог найти .exd файлы с помощью поиска windows. С другой стороны, команда cmd dir *.exd /S нашел один файл в моей системе.


советы в КБ и выше не работает для меня. Я обнаружил, что если один пользователь Excel 2007 (с обновлением безопасности или без него; не уверен в точных обстоятельствах, которые вызывают это) сохраняет файл, возвращается исходная ошибка.

Я обнаружил, что самый быстрый способ восстановить файл снова-удалить весь код VBA. Спасать. Затем замените код VBA (копировать/вставить). Спасать. Перед попыткой этого, я удаляю .Сначала файлы EXD, потому что в противном случае я получаю сообщение об ошибке открыть.

в моем случае я не могу обновить / обновить всех пользователей моего файла Excel в разных местах. Поскольку проблема возвращается после того, как некоторые пользователи сохраняют файл Excel, мне придется заменить элемент управления ActiveX чем-то другим.


упрощенные инструкции для конечных пользователей. Не стесняйтесь копировать / вставлять следующее.

вот как исправить проблему, когда она возникает:

  1. закройте все программы и файлы Office.
  2. откройте Проводник Windows и введите %TEMP% в адресную строку, затем нажмите Enter. Это приведет вас в системную временную папку.
  3. найдите и удалите следующие папки: Excel8.0, VBE, Word8.0
  4. теперь попробуйте снова использовать свой файл, он не должно быть никаких проблем.

возможно, вам придется подождать, пока проблема не возникнет, чтобы это исправление работало. Применение его преждевременно (до установки Центра Обновления Windows в вашей системе) не поможет.


лучший источник информации и обновлений по этому вопросу, который я мог найти, находится в блогах TechNet " блог группы поддержки Microsoft Excel (Как уже упоминалось):

элементы управления формы перестают работать после обновления декабря 2014 (обновлено 10 марта 2015)

в марте 2015 года было выпущено исправление в дополнение к автоматическому исправлению и ручным инструкциям, и он также доступен в Центре обновления Windows.

последнее обновление и исправление от Microsoft: 3025036" не удается вставить объект " ошибка в решении ActiveX custom Office после установки обновления для системы безопасности MS14-082

статус: обновление 10 марта 2015:

исправления этой проблемы были выпущены в марте 2015 г. обновления для Office 2007, 2010 & 2013.

Общая информация о проблеме:

для некоторых пользователей элементы управления формой (FM20.dll) больше не работают, как ожидалось после установки обновлений безопасности MS14-082 Microsoft Office для декабря 2014 года. Проблемы возникают в случаях, когда они открывают файлы с существующими проектами VBA с помощью элементов управления forms, пытаются вставить элемент управления forms в новый лист или запустить стороннее программное обеспечение, которое может использовать эти компоненты.

https://technet.microsoft.com/en-us/library/security/ms14-082.aspx

вы можете получить ошибки, такие как: "Невозможно вставить объект"; " объект библиотека недопустима или содержит ссылки на определения объектов, которые не удалось найти"; " программа, используемая для создания этого объекта, - Forms. Эта программа либо не установлена на вашем компьютере, либо не отвечает. Чтобы изменить этот объект, установите формы или убедитесь, что все диалоговые окна в формах закрыты."[...] Кроме того может быть невозможно использовать или изменять свойства элемента управления ActiveX на листе или получить сообщение об ошибке при попытке ссылаться на элемент управления ActiveX как член лист через код.

руководство и дополнительные решения:

сценарии решения:

поскольку эта проблема может затронуть несколько компьютеров, также можно создать решение для сценариев для удаления файлов EXD и запустить сценарий как часть процесса входа в систему с помощью политики. Сценарий, который вам понадобится, должен содержать следующие строки и должен быть запущен для каждого пользователя как.файлы exd являются пользовательскими специфический.

del %temp%\vbe\*.exd
del %temp%\excel8.0\*.exd
del %appdata%\microsoft\forms\*.exd
del %appdata%\microsoft\local\*.exd
del %temp%\word8.0\*.exd
del %temp%\PPT11.0\*.exd

дополнительный шаг:

Если вышеуказанные шаги не решают вашу проблему, еще один шаг, который можно проверить (см. предупреждение ниже):

  1. на полностью обновленной машине и после удаления .exd файлы, откройте файл в Excel с правами редактирования.

  2. открыть Visual Basic для приложений > изменить проект, добавив комментарий или редактирование в любой модуль кода > Отладка > Компиляция VBAProject.

  3. сохранить и снова открыть файл. Тест на разрешение.

Если решено, предоставьте этот обновленный проект дополнительным пользователям.

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


Я, наконец, нашел этот ответ на официальном Microsoft KB:

http://support.microsoft.com/kb/3025036/EN-US

нет новой информации здесь, чем то, что мы имеем в предыдущих ответах, но, по крайней мере, он признает, что Microsoft знает о проблеме.


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

Шаг 1: Удалите следующие обновления-KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927

Шаг 2: скрыть эти обновления, чтобы они не были установлены при последующих перезагрузках

Шаг 3: удалить папку Excel8.0 из C:\Users\\AppData\Local\Temp

Шаг 4: Перезагрузите workstatiion (я также хотел бы убедиться, что вышеупомянутый KBs не был непреднамеренно применен)


Я хочу дать ответ, который работал только для меня (я понимаю, что я может быть только один-либо). У меня был один макрос, который я вызывал с помощью ленты. Он имел следующий код:

colStore = new Collection

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

Set colStore = new Collection

Он снова начал работать. Абсолютно странно если вы спросите меня, но, возможно, это поможет кому-то, кто был в таком же отчаянии, как и я.