Excel в реестре windows

Начиная с версии 2007 в Excel используется XML-формат, на основе которого создаются рабочие книги, шаблоны и надстройки. Фактически эти файлы представляют собой ZIP-архивы. При необходимости они могут быть разархивированы и просмотрены.[1] В версиях, предшествующих Excel 2007, применялся двоичный файловый формат. И, хотя спецификации этого формата известны, работать с двоичными файлами совсем непросто. С другой стороны, файловый XML-формат относится к категории так называемых открытых форматов. Подобные файлы могут создаваться и обрабатываться с помощью любых программ, не относящихся к Office 2010.

В качестве примера используется файл с поддержкой макросов Excel (XLSM). Он состоит из одного рабочего листа, одного листа диаграммы и простого макроса на языке VBA. Рабочий лист включает таблицу, кнопку (из группы элементов управления Формы), рисунок Smart Art, а также фотографию цветка (рис. 1).

Рис. 1. Пример листа рабочей книги

Скачать заметку в формате Word или pdf, примеры в формате Excel

Структура Excel-файлов

Для просмотра «внутренностей» файла Excel откройте Проводник Windows и добавьте расширение ZIP к файлу. После этого файл sample.xlsm будет переименован в sample.xlsm.zip. Затем можно открыть этот файл с помощью встроенного в Windows архиватора (рис. 2). Если вы установите архиватор 7-zip, то сможете открывать файлы Excel непосредственно, не переименовывая их (рис. 3).

Рис. 2. Структура каталогов файла рабочей книги при просмотре во встроенном архиваторе Windows; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Рис. 3. Непосредственное открытие файла Excel, как архива в 7-zip

Первое, что бросается в глаза при просмотре файла (см. рис. 2), — это наличие структуры каталогов. Почти все используемые файлы являются текстовыми XML-файлами. Их можно просматривать в окне текстового редактора, XML-редактора, веб-браузера либо даже в окне Excel. На рис. 4 показано содержимое такого файла, просматриваемого в окне браузера Microsoft Edge. Файлы формата, отличного от XML, включают графические файлы и VBA-проекты (хранятся в двоичном формате).

Рис. 4. Просмотр XML-файла в окне веб-браузера

Рассматриваемый XML-файл (см. рис. 2) включает три корневые папки; некоторые из них включают подпапки. Обратите внимание, что многие папки включают папку _rels. Здесь находятся XML-файлы, которые определяют связи с другими компонентами пакета.

Папки, входящие в состав файла рабочей книги sample.xlsm (см. рис. 2).

  • Здесь можно найти сведения о связях в пакете.
  • XML-файлы, которые описывают свойства файла и настройки приложения.
  • Эта папка является «сердцем» файла. Ее имя изменяется в зависимости от типа документа Office (xl, ppt, word и т.д.). Здесь находится несколько XML-файлов, содержащих настройки для рабочей книги. Если в состав рабочей книги включен VBA-код, он будет находиться в двоичном файле с расширением BIN. Эта папка включает несколько подпапок (количество подпапок изменяется в зависимости от выбранной рабочей книги):
  • Здесь находится XML-файл для каждой диаграммы, включающий описание ее настроек.
  • Здесь содержится XML-файл, включающий данные для каждого листа диаграммы в рабочей книге.
  • Здесь находятся XML-файлы, в которых содержится описание диаграмм (рисунков SmartArt) в рабочей книге.
  • Здесь содержится XML-файл, включающий данные для каждого «рисунка». Здесь под этим термином подразумеваются кнопки, диаграммы и изображения. Любопытно, что иногда такое содержимое является мусорным. Удаляю эту папку, мы удаляем весь мусор. Правда, может пострадать и ценная информация. Подробнее см. Excel «тормозит». Что делать? Дубль 2.
  • Здесь содержатся внедренные медиаклипы, например, GIF- и JPG-файлы.
  • Включает XML-файл, содержащий данные для каждой таблицы.
  • Содержит XML-файл, включающий данные о теме рабочей книги.
  • Включает XML-файл для каждого рабочего листа в книге.

Любопытно, что добавление расширения ZIP к файлу Excel, не мешает открытию его в Excel, поскольку работа этой программы не зависит от расширения открываемого файла. Также можно сохранить рабочую книгу с расширением ZIP. Для этого в диалоговом окне Сохранение документа добавьте расширение ZIP и заключите имя файла в двойные кавычки, например, “Пример.xlsx.zip”.

Почему файловый формат столь важен

«Открытые» файловые XML-форматы, появившиеся в Microsoft Office 2007, представляют собой огромный шаг вперед, важный для всего компьютерного сообщества. Самое главное — рабочие книги Excel в этих форматах относительно легко считывать и записывать посредством ряда программ, отличных от Excel. Например, вполне возможно написать такую программу, которая будет изменять тысячи рабочих книг Excel, причем сама программа Excel не потребуется. Подобная программа может вставлять новые рабочие листы в каждый такой файл.

Важно также то, что новые форматы файлов более устойчивы к возможным повреждениям (по сравнению с устаревшими двоичными форматами). Я сохранил файл рабочей книги и удалил один из XML-файлов рабочего листа. При попытке повторного открытия этого файла в Excel отобразилось сообщение, показанное на рис. 5. В нем говорится о том, что файл был поврежден и данные в нем отличаются от данных в файлах с расширением .res. Причем Excel способна «отремонтировать» и открыть файл. При этом удаленный рабочий лист будет помещен на место, хотя и окажется пустым.

Рис. 5. Программа Excel может сама «отремонтировать» поврежденный файл рабочей книги

Кроме того, размер заархивированного XML-файла зачастую меньше размера соответствующего двоичного файла. И еще одно преимущество заключается в том, что структурированная природа файла позволяет извлекать отдельные его элементы (например, графику). Как правило, у пользователя Excel не возникает потребности в просмотре либо изменении XML-компонентов файла рабочей книги. Но если вы являетесь разработчиком, то вам придется создавать код, который изменяет компоненты пользовательского «ленточного» интерфейса Excel. При этом следует хотя бы поверхностно знать структуру XML-файла рабочей книги.

Файл OfficeUI

В файле Excel.officeUI сохраняются результаты изменений, внесенных на панель быстрого доступа и ленту. Этот XML-файл можно найти в следующей папке: C:Users<имя_пользователя>AppDataLocalMicrosoftOffice

Если вы не нашли в этой папке такого файла, это означает, что вы не изменяли в Excel, ни ленту, ни панель быстрого доступа, установленные по умолчанию. Добавьте любую команду на панель быстрого доступа, и файл появится. Причем изменения вносятся в файл незамедлительно, еще до закрытия Excel. Для просмотра файла Excel.officeUI можно воспользоваться редактором XML-кода, веб-браузером или Excel. Выполните следующие действия.

  1. Создайте копию файла Excel.officeUI.
  2. Добавьте расширение XML к копии файла, в результате чего название файла примет вид Excel.officeUI.xml.
  3. Перейдите в Excel, выполните команду Файл –> Открыть.
  4. Отобразится диалоговое окно, включающее ряд параметров; выберите XML-таблица.

На рис. 6 показан импортированный файл Excel.officeUI.xml. В рассматриваемом примере на панель быстрого доступа добавлено пять команд (строки 3, 8, 9, 12, 13).

Рис. 6. Просмотр файла данных Excel.officeUl.xml в Excel

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

Не пытайтесь изменить файл Excel.OfficeUI, если вы точно не представляете, для чего он предназначен. Но при этом не бойтесь экспериментировать. Если при запуске Excel появится сообщение об ошибке в файле Excel.ОfficeUI, можете просто удалить его, после чего Excel создаст новый экземпляр этого файла. Но лучше все же хранить копию исходного файла в безопасном месте.

Файл XLB

Программа Excel хранит настройки панелей инструментов и меню в файле с расширением XLB. Даже несмотря на то, что Excel 2010 (и более поздние версии) официально не поддерживает панели инструментов и меню так, как в предыдущих версиях, файл XLB по-прежнему используется. Если вы не можете его найти, значит, программа до сих пор не сохранила ни одно из пользовательских меню или панелей инструментов. В момент закрытия Excel 2010 текущая конфигурация панелей инструментов сохраняется в файле Excel14.xlb (в версии 2013 г. – в файле Excel15.xlb). Этот файл (обычно) находится в следующем каталоге: C:Users<имя_пользователя>AppDataRoamingMicrosoftExcel

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

Файлы надстроек

Надстройка фактически является рабочей книгой Excel, имеющей некоторые особенности:

  • Значение свойства рабочей книги IsAddin равно Истина. Это означает, что надстройка может быть загружена и выгружена с помощью диалогового окна Надстройки.
  • Эта рабочая книга скрыта, причем подобное состояние не может изменяться пользователем. Следовательно, надстройка никогда не может быть активной рабочей книгой.
  • Если вы работаете с VBA, имейте в виду, что надстройка не входит в коллекцию Workbooks.

Для получения доступа к диалоговому окну Надстройки выберите команду Файл –> Параметры. Выберите раздел Надстройки в левом списке, выберите пункт Надстройки Excel, и щелкните на кнопке Перейти (рис. 7). Альтернативные методы. Если в рабочем окне Excel отображается вкладка Разработчик, перейдите на нее, и кликните Надстройки. И, наконец, если установлена вкладка Разработчик, можно воспользоваться комбинацией клавиш: нажмите и удерживайте клавишу Alt, последовательно нажимайте Р – З (буква) – 2.

Рис. 7. Надстройки в меню Параметры Excel

Настройки Excel в системном реестре

В диалоговом окне Параметры находятся десятки настроек, определенных пользователем. Для хранения этих настроек и обращения к ним во время запуска Excel используется реестр Windows, который еще называют системным реестром. Он представляет собой централизованную иерархическую базу данных, используемую операционной системой и приложениями. Реестр появился еще в Windows 95, в которой заменил прежние INI-файлы с хранящимися в них настройками Windows и приложений.

Для просмотра и редактирования системного реестра можно использовать редактор реестра – regedit.ехе, расположенной в папке C:Windows. Прежде чем начать эксперименты, используйте команду Файл –> Экспорт редактора реестра. Эта команда позволяет сохранить ASCII-версию всего реестра, либо выбранную вами ветвь. Чтобы вернуть реестр в первоначальное состояние, импортируйте ASCII-файл, после чего реестр примет свой исходный вид (команда Файл –> Импорт).

Системный реестр содержит ключи и значения, расположенные в иерархическом порядке. Ключи верхнего уровня: HKEY_CLASSES_ROOT; HKEY_CURRENT_USER; HKEY_LOCAL_MACHINE; HKEY_USERS; HKEY CURRENT CONFIG. Информация, используемая Excel 2013, хранится в следующем разделе реестра: HKEY_CURRENT_USERSoftwareMicrosoftOffice15.0Excel. Настройки реестра обновляются автоматически после закрытия Excel.

Рис. 8. Редактор реестра позволяет просматривать и изменять системный реестр

Учтите, что Excel считывает содержимое реестра Windows один раз — при запуске. Кроме того, Excel единственный раз обновляет настройки реестра — при нормальном завершении. Если Excel завершается аварийно (такое бывает), информация в реестре не обновляется. Если изменить одну из настроек Excel, например, отображение строки формул, это изменение не зафиксируется в системном реестре до тех пор, пока Excel не завершит свою работу без эксцессов.

В таблице (рис. 9) перечислены настройки реестра, имеющие отношение к Excel 2013. Учтите, что некоторых из них вы можете не найти в своей базе данных реестра.

Рис. 9. Информация о конфигурации Excel в системном реестре

Хотя большинство настроек может изменяться в диалоговом окне Параметры, некоторые настройки невозможно изменить таким образом (в этом случае применяется редактор реестра). Например, при выделении диапазона ячеек иногда требуется, чтобы выделенные ячейки окрашивались в черный цвет на белом фоне. Для этого достаточно добавить в системный реестр следующий ключ.

  1. Откройте редактор реестра и найдите раздел HKEY_CURRENT_USERSoftwareMicrosoftOffice15.0ExcelOptions.
  2. Щелкните правой кнопкой мыши и выберите пункт Создать –> Параметр QWORD (64 бита).
  3. Назовите создаваемое значение Options6.
  4. Щелкните правой кнопкой мыши на ключе Options6 и выберите пункт Изменить.
  5. В диалоговом окне Изменение параметра QWORD установите переключатель Десятичная и введите значение 16 (рис. 10).

Рис. 10. Ввод значения для параметра системного реестра

После перезагрузки Excel ячейки выделяются черным цветом (следует отметить, что я не заметил изменений). Если вас это не устраивает, удалите запись реестра Options6.

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

[1] По материалам книги Джон Уокенбах. Excel 2010. Профессиональное программирование на VBA. – М: Диалектика, 2013. – С. 112–121.

Многие пользователи офисного пакета MS Office наверняка замечали неудобную «фишку» программы Excel — невозможность открыть разные файлы в различных окнах программы. Например, хотите вы открыть один xls-файл (или xlsx-файл) на одном мониторе, а второй xls-файл на другом, но у вас ничего не получится! Программа MS Excel не даст вам такой возможности, т.к. по умолчанию файлы Excel открываются в MS Exel 2010 в одном окне.

Открытие файлов Excel в отдельных окнах

Всем известно, что мелкомягкие всегда «стараются сделать удобные программы и думают о пользователях», и если пользователю что-то не нравится, значит от тупой и глупый. Шутка. Конечно же софт от Microsoft’a далек от совершенства, и зачастую очередная новая версия оказывается полным отстоем.

Открытие файлов Excel в отдельных окнах можно сделать с помощью небольшой правки реестра Windows:

Примечание: реестр нужно править 2 раза — для различных типов (расширений) файлов: и для XLS, и для XLSX.

1. Запустить REGEDIT (для тех, кто не знает: Пуск -> Выполнить -> Написать в строке «regedit» и нажать ОК. Или вместо меню пуск нажать комбинацию клавиш Win + R).

2. Открыть ветку реестра [HKEY_CLASSES_ROOTExcel.Sheet.12shellOpen] (это настройка Excel для XLSX-файлов):

Открытие файлов Excel в отдельных окнах

3. Переименовать папку «ddeexec» в «ddeexec2«:

Открытие файлов Excel в отдельных окнах

4. Открыть папку «Command» и кликнуть по первой строчке 2 раза, чтоб открылось отдельное окно:

Открытие файлов Excel в отдельных окнах

5. Изменить значение по умолчанию с:

«C:Program Files (x86)Microsoft OfficeOffice14EXCEL.EXE» /dde

Открытие файлов Excel в отдельных окнах

на:

«C:Program Files (x86)Microsoft OfficeOffice14EXCEL.EXE» «%1»

Открытие файлов Excel в отдельных окнах

6. В папке «command» выделить параметр «command«, нажать клавишу F2 и переименовать параметр в «command2«:

Открытие файлов Excel в отдельных окнах

 Теперь XLSX-файлы будут открываться в различных окнах.

7. Повторить пункты 3-6 для настройки Excel для XLS-файлов, только предварительно открыть ветку [HKEY_CLASSES_ROOTExcel.Sheet.8shellOpen]:

Открытие файлов Excel в отдельных окнах

Теперь XLS-файлы тоже будут открываться в различных окнах.

Примечание: после данных «махинаций» станет недоступной функция переключение между окнами в Excel через меню программы Вид -> Перейти в другое окно. Для того чтобы книги открывались, как раньше (в одном окне), необходимо будет все разделы реестра вернуть исходное состояние. Полагаю, те, кто искал эту статью и выполнил все пункты настройки, вряд ли будут возвращать их назад.

Комментарии ()

Оставьте свой комментарий

Excel 2010, в отличии от более ранних версий, по умолчанию открывает новые файлы Excel в одном родительском окне. Вероятно, такое поведение Excel 2010 вызвано желанием разработчиков сэкономить ресурсы оперативной памяти на компьютере пользователя, ведь в этом случае порождается всего один, а не несколько независимых процессов excel.exe. Но это решение иногда вызывает у пользователей определенные неудобства, так, например, при необходимости работать одновременно с двумя (и более) электронными книгами Excel – переключаться между разными книгами в рамках одного окна крайне неудобно.

Тот же Word 2010 ведет себя по-другому – каждый новый документ открывается в отдельном окне.

Сегодня мы покажем, как для Excel 2010 настроить открытие файлов в отдельных окнах. Такое поведение Excel особенно удобно при работе на компьютере с несколькими мониторами и позволяет разнести документы на разные мониторы и работать с ними одновременно (особенно часто так поступают различные бухгалтера, экономисты, статисты и другие «повелители» электронных таблиц).

  1. В первую очередь нужно определить на какой раздел реестра ссылается тот или иной тип файла Excel. Например, если нас интересуют файлы с расширением .xls, откройте редактор реестра (regedit.exe) и перейдите в раздел HKEY_CLASSES_ROOT.xls. Нас интересует значение параметра (Default), В нашем примере в нем указано Excel.Sheet.8. Это означает, что параметры открытия этого типа файлов Excel задаются в разделе HKEY_CLASSES_ROOTExcel.Sheet.8. Для файлов типа .xlsx – это будет раздел HKEY_CLASSES_ROOTExcel.Sheet.12. ассоциации файлов в excel2010
  2. Важно! Перед модификацией реестра настоятельно рекомендуем создать резервную копию ветки, параметры в которой вы правите. Для этого щелкните ПКМ по нужному разделу реестра, выберите пункт меню Export и укажите имя reg файла, в котором нужно сохранить параметры этого куста реестра.

    Экспорт ветки реестра в файл

  3. Перейдем в раздел реестра HKEY_CLASSES_ROOTExcel.Sheet.8shellOpencommand. Заменим значение ключа: (Default) с «C:Program Files (x86)Microsoft OfficeOffice14EXCEL.EXE» /dde на «C:Program Files (x86)Microsoft OfficeOffice14EXCEL.EXE» /e “%1“. Т.е. в вместо /dde нужно указать /e “%1”.

    Примечание. В нашем примере используется 32-битная версия Office 2010, запущенная на 64-битной версии Windows 7. В 32 битной ОС путь к файлу EXCEL.EXE другой.

  4. В этом же разделе переименуйте название ключа command, например в commandold.Правка реестра, позволяющая открывать документы excel в отдельных окнах
  5. Переименуйте (или удалите) раздел HKEY_CLASSES_ROOTExcel.Sheet.8shellOpenddeexec, например в ddeexecold (ПКМ по ветке – Rename)
  6. Теперь попробуйте открыть несколько xls файлов – каждый из них должен открыться в отдельном независимом окне Excel 2010. Как открывать файлы Excel 2010 в разных окнах
  7. Пункты 3-5 нужно повторить для каждого типа файлов, которые Excel должен открывать в отдельном окне (как определить нужную ветку реестра описано в п.1).

Чтобы не возится с ручной правкой реестра, мы подготовили 2 готовых reg файла (архив находится здесь):

Важно! Данные reg файлы предназначены для 32 битной версии Office 2010, установленной на 64 битной версии Windows. Если вы используете 32-битную версию Windows измените путь к excel.exe, заменив в обоих файлах значение Program Files (x86) на Program Files.

  • Excel2010SeparateOn.reg – включает открытие файлов Excel (.xls, xlsx, xlsm и xlst) в отдельном окне
  • Excel2010SeparateOff.reg – возвращает стандартные настройки, когда все документы открываются в рамках одного родительского окна

Совет. Выйти из положения можно и проще – запуская для каждого документа отдельный процесс Excel и открывая нужный документ через меню Файл->Открыть, но, согласитесь, это не удобно и несколько утомительно.

Introduction

So you have deployed your awesome Excel addin in production and all is working fine for some weeks: you are enjoying your success …
But one day the phone rings and the guy at the other side is not really happy; no, he is completely upset and you could almost smell his breath when he screams.
But why? Because your awesome addin has stopped working on his workstation without notice.

Sometimes the root-cause is obvious: you have delivered a new version, but in many cases you will hardly ever know the root-cause of this annoying situation: Windows update, Office update, quick and dirty moving/installation of the addin from a workstation to another one, bad alignment of Uranus and Jupiter… 

A wealth of errors can happen, then it’s hard to have them all in mind, especially when you are in a hurry and with stress you start to get mixed up. So to be as efficient as possible you’d better have a checklist and this is precisely what this article will be, enumerating all the errors I have encountered describing usual causes and solutions. 

So let’s troubleshoot! 

0) The magic solution that works almost 50% of the time

If the error message does not inspire you and you want or need to move fast, you can try this as a first shot:

  1. Go into the VBA editor (ALT-F11 is a handy shortcut).
  2. In the top menu, choose «Tools» then «References«:

    VBA Tools References

    VBA Tools References

    You should see this popup:

    vba_references_popup

    The reference can point to an XLA file or a TLB file (which is the interface of your addin used
    by VBA).

  3. Locate your addin reference (if selected it should be at the top), uncheck it and click «OK«.
  4. Reopen this popup, locate your addin (you can type its first letter to directly go to the first addin whose name starts with this letter) but this time recheck it.
  5. Restart the operation that was broken and cross your fingers, it may be OK now.
  6. Still sucks? Follow the rest of this guide depending on your error.

I’ve seen the unreference/re-reference trick working for:

  • Error 430 «class does not support automation or does not support expected interface» :

    VBA Error 430

    VBA Error 430

    which is typically the consequence of an update of your add-in API like changing the signature of a method.

  • «Out of memory» errors:

    VBA Out of memory error

    VBA Out of memory error

  • And a bunch of other situations…

If your Excel application is made of normal spreadsheets (XLS, XLSM…) and XLAs, do not forget to update the references for all the files referencing your addin, not just the spreadsheets.

1) Excel is crashing before you can try the magic solution

Sometimes you’re really not in luck and while you feel that a simple «unreference/rereference» could do the job Excel does not give you the opportunity to try it as it crashes before you can access the VBA editor.

This issue can occur if the workbook is referencing the absolute path to the TLB on your development environment and you deploy the workbook as is in your production environment where the TLB will probably be in another place (typically a sub-directory of «Program Files»).
It can also occurs if you have multiple versions of your addin on the workstation.
It can often happens on your development workstation if:

  • you develop with multiple workspaces (one for each of your SVN/Git branches) and there is a mix between the different TLBs and addins : you can try a full cleanup (including Windows registry) and rebuild from the workspace you’re currently working on
  • you use a task manager or integration server like Jenkins (ex Hudson) which builds your addin and register it into the system in your back : you can temporarily disable the task that breaks your setup

If the workbook is broken in production, you can use two solutions :

  1. Start Excel in safe-mode, either by starting it from the «Run» popup (shortcut is Windows-R) with the «/safemode» option :

    Run Excel in safe-mode

    Run Excel in safe-mode

    or by pressing continuously the CTRL key while starting it which should trigger the following popup :

    Excel start safemode

    Excel start safemode.

    Once Excel is started in safe-mode load the broken workbook. You should be able to access the «References» popup and do the unreference/rereference trick.

  2. You can temporarily move or rename the TLB file and starts your Excel application as usual. Excel should not crash anymore and starts as usual, only complaining about the missing TLB. You can now move/rename the TLB as it was before, proceed to the «unreference/rereference» trick and then save the workbook to ensure the correct reference is kept. All should be fine at the next startup.

2) «Error in loading DLL» when referencing a TLB

If, when referencing a TLB, you see this popup :

VBA Error in loading DLL

VBA Error in loading DLL

this is probably the sign that Excel cannot access the TLB file, the root cause can be :

  • a simple installation issue : the TLB not being where it is expected (you can check the expected path in the Windows registry using RegEdit); so check the correct installation of your application and reinstall it if necessary.
  • user rights issue with the TLB, and more generally all the installation items : this can happen if you have installed your application with a user that is not the one currently trying to use the application (e.g. a remote user).
    You can then either:

    • proceed to a dedicated reinstallation for the current user,
    • change the rights of the installation items to allow him full access,
    • or add him to a user-group that has the required rights,

    whichever you find easier and cleaner in your situation.

3) «Error in loading DLL» when compiling the VBA project

If this error occurs when the VBA code is compiled, either automatically when accessing a function/sub that uses the addin API or manually when clicking the Debug/Compile menu item then check if you have recently changed the settings of a dependency (e.g. of your .Net (C#, VB.Net…) project) that contains COM types you expose through your addin API.

I’ve seen this issue once in a C# project with the ADODB dll when the «Embed Interop Types» option was set to «True» in the reference properties. With only this settings and «Copy Local» to «False» a method of the addin that returned an ADODB connection was broken in Excel 2003 on Windows XP whereas all was working fine on Excel 2010 on Windows 7. I’ve not dived into the details but it seems the «Embed Interop Types» feature is not retro-compatible or may need some additional setup on the workstation, which in both case made it unusable.

So, setting «Embed Interop Types» to «False» and reverting «Copy Local» to «True» solved the issue caused by Visual Studio 2010 because it activates these settings by default with .NET 4.0 projects (the project had recently been migrated from .Net 3.5 to .Net 4.0)!

ADOBD Reference Properties

ADOBD Reference Properties

As often VS wanted to help but broke something
<img src= » class=»wp-smiley» />

4) The addin does not want to load

If you can see your addin in the «COM Addins» list and you can check it :

COM addin checked

COM addin checked

but when you reopen the «COM Addins» popup your addin is not checked anymore, it’s the sign Excel cannot or does not want to load the addin.

If your addin throws an exception when loaded, ie in the «OnConnection» method, you should see a warning at the bottom of your addin description, in the «Load Behavior» field :

Excel COM addin error

Excel COM addin error

You can reproduce this behavior with a simple code :

public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
    applicationObject = application;
    addInInstance = addInInst;

    throw new Exception("Boom!");
}

But if your addin causes more serious damages like an Excel crash, what you can experiment with such a code :

public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
    applicationObject = application;
    addInInstance = addInInst;

    System.Diagnostics.Process.GetCurrentProcess().Kill();
}

then Excel won’t trust it anymore and may put in quarantine ALL the addins loaded at the time of the crash!
If you are lucky you should see this message at the next startup of Excel :

Excel addin serious problem

Excel addin serious problem

You can choose to give your addin a second chance by answering «No» or you can answer «Yes» so the addin will stay disabled and you won’t be able to load it into Excel until you notify Excel the addin should not be kept in quarantine any longer.

But if you are in doubt and think your addin may have been disabled how to check ?
You have at least two solutions :

  •  using Excel 2010 : go to the «File» ribbon tab then «Options» :

    Excel2010 File Options

    Excel2010 File Options

    You should see the «Excel Options» popup in which you now select «Add-Ins» :

    Image 14

    Excel 2010 Options Add-Ins

    From here scroll down to the bottom of the list where the disabled items are listed.
    Here is an example of a too zealous Excel that has disabled all the COM addins (and they were a lot!) :

    Image 15

    Excel2010 Disabled addins

    To show the culprit of all this mess use the «Manage» drop-down at the bottom of the window and choose «Disabled Items» :

    Image 16

    Excel 2010 Go To Disabled

    then click the «Go…» button to show the bad guy :

    Excel 2010 Culprit Addin

    Excel 2010 Culprit Addin

    If you forgive your addin then select it and click «Enable» then «Close» :

    Excel 2010 Addin Reenable

    Excel 2010 Addin Reenable

    You should now be able to reload it and all the other addins disabled due to the crash via the «COM Add-Ins» popup.

  • using the Windows registry : Excel stores the disabled items list into the registry under the keys «…SoftwareMicrosoftOffice14.0ExcelResiliencyDisabledItems«, e.g. «HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0ExcelResiliencyDisabledItems«. If an addin has been disabled you’ll find a binary key holding its name :

    Image 19

    RegEdit DisabledItems Key

    We can read the identity of our explosive addin : «boomaddin».
    If you want to reenable it you can either:

    • delete the numerical entry (here «5793E01E»)
    • delete the whole «DisabledItems» key

    Note that this change will be effective only for the next Excel instances, so you’ll have to restart your application to be able to load your addin as usual.

5) NullReferenceException thrown by the .Net (C#, VB.Net…) addin code

«Object not set to an instance of an object» like errors generally happen when your .Net addin has not been loaded by Excel, so initialization code has not been executed (typically the part that captures the Excel application instance loading the addin).
Therefore your addin code may be naively accessing not initialized references.

Indeed you’ll typically use code like this one :

public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
    
    applicationObject = application;
    addInInstance = addInInst;

    
}

public void DoSomething()
{
    
    (applicationObject as Application).ActiveCell.Value2 = "Something";
}

If the addin is not loaded the «OnConnection» method will not be called, then the «applicationObject» reference will not be initialized with the running Excel instance.

It could also happen that something is broken inside the «OnConnection» method itself preventing it from running to its end, letting the addin half-initialized (which is far more dangerous than not initialized at all as the resulting errors and behavior will be more surprising and entertaining
;) ).
So you should always keep track of your addin state and notify of any inconsistency : using a simple boolean flag set to «true» at the end of initialization (typically at the end of the «OnConnection» method) should be sufficient in most cases.

So refer to point 4) to check the status of your addin.

6) Generic run-time error

Sometimes you get this kind of anonymous error popup :

Excel Automation error

Excel Automation error

To make sense of this cryptic and apparently useless message you should lookup your error-code/HRESULT (here 80131524) in this list.

In this case the error was COR_E_DLLNOTFOUND due to a missing native DLL used through DllImport by the C# addin (itself called by a VBA macro).

Deployment of native DLLs often causes issues that you can troubleshoot using Dependency Walker (see my article about it).

7) All other unknown mystic errors

If you have any error not referenced here, for which you don’t find a solution by googling it and whose root-cause is impenetrable then, in desperation, you can try to remove any trace of your addin in your system : 

  • remove all the files and directories that contain the assets of your application like XLS/XLSX/XLSM spreadsheets (whose references could have been corrupted), DLLs and TLBs
  • cleanup the registry by hand by looking for all the references to your addin : DLLs and TLBs keys should be enough but you can also remove all the COM registration information of your types.

Then reinstall the addin and cross your fingers…

It should be relatively uncommon to need this : in the last year I’ve never had to go this far thanks to my better understanding of Excel addins and this kind of checklist.

Conclusion 

If this article has helped you troubleshoot an issue I’d like to read your story.

If you have any remarks or suggestions about this article or if you know other errors with their standard fixes please share by letting a comment, I’ll do my best to update this article with your feedback.

На чтение 4 мин. Просмотров 676 Опубликовано 13.04.2021

Выпуск Microsoft Office 2016 привлек множество пользователей благодаря множеству новых функций, таких как новые темные темы, одновременное сотрудничество в реальном времени между несколькими пользователями в одном документе Word, нажмите оптимизация ввода и многое другое. Таким образом, с его выпуском довольно много пользователей были теми, кто просто обновился до Microsoft Office 2016 с более ранней версии Microsoft Office вместо новой установки, что является нормальным и не должно вызывать никаких проблем.

Но в некоторых случаях пользователи сообщали, что им не удалось просмотреть файлы Microsoft Excel в своих учетных записях в Microsoft Outlook 2016. Когда они попытались это сделать, им выдается ошибка, в которой говорится: « Этот файл не может быть Предварительный просмотр, потому что для него не установлен предварительный просмотр ». Та же ошибка может также появиться при попытке предварительного просмотра файла Microsoft PowerPoint в Microsoft Excel и в аналогичных сценариях, когда вы предварительно просматриваете файл Microsoft office в продукте Microsoft Office.

Сообщение об ошибке может вводить в заблуждение . Предварительный просмотр установлен, но неправильные значения в реестре Windows и поврежденные строки реестра вызывают эту ошибку. Ниже приводится решение, которое, как известно, работает для этой ошибки.

Решение 1. Исправьте запись в реестре Windows

Нажмите и Удерживайте клавишу Windows и Нажмите R . Появится диалоговое окно “Выполнить”.

Введите regedit и нажмите Enter . Нажмите Да , если появится сообщение с подтверждением контроля учетных записей.

В left панели , Дважды щелкните на HKEY_LOCAL_MACHINE , чтобы развернуть его. Под ним аналогично Дважды щелкните на Software , чтобы развернуть его.

Теперь путь навигации отсюда будет отличаться по типу установленного вами Microsoft Office и разрядности Microsoft Office и вашей Windows. Если вы не уверены в разрядности или типе продукта, вы можете попробовать все указанные ниже пути, а если вы не можете найти следующую папку, следуя определенному пути, просто перейдите к следующему пути..

Если вы установили версию Microsoft Office Click-to-Run , что характерно для большинства пользователей, то следуйте этот путь:

HKEY_LOCAL_MACHINE SOFTWARE Microsoft Office ClickToRun REGISTRY MACHINE Software Microsoft Windows CurrentVersion PreviewHandlers

Если вы установили 32-битная версия Microsoft Office и у вас установлена ​​ 64-битная Windows , затем следуйте по этому пути:

HKEY_LOCAL_MACHINE SOFTWARE Wow6432Node Microsoft Windows CurrentVersion PreviewHandlers

Если у вас есть 32-разрядная версия Microsoft Office , установленная в 64-разрядной Windows или 64-разрядной версии Microsoft Office , установленный на 64-битной Windows , затем следуйте по этому пути:

HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion PreviewHandlers

После того, как на левой панели выбрано Выбрано (выделено) PreviewHandlers , на левой панели будет количество строк реестра. Но нас интересуют только четыре из них.

Справа вы увидите три столбца; Имя , Тип и Данные . В столбце Name найдите четыре строки по следующим именам и убедитесь, что соответствующее значение в Data точно такое же, как написано ниже.

Name Данные

{21E17C2F-AD3A-4b89-841F-09CFE02D16B7} Средство предварительного просмотра Microsoft Visio

{65235197-874B-4A07-BDC5-E65EA825B718} Средство предварительного просмотра Microsoft PowerPoint

{84F66100-FF7C-4fb4-B0C0-02CD7FB668FE} Microsoft Word средство предварительного просмотра

{00020827-0000-0000-C000-000000000046} Средство предварительного просмотра Microsoft Excel

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

В тексте ниже Данные значения ng>, Удалите старое значение и Введите значение в соответствии с таблицей выше. Затем нажмите OK .

Если несколько строк имеют неправильное значение, вам придется исправить их все..

Если строки реестра отсутствуют полностью, то щелкните правой кнопкой мыши на левой панели и щелкните Создать , а затем нажмите Строка Значение . Затем назовите строку реестра в соответствии с таблицей выше.

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

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

Like this post? Please share to your friends:
  • Excel в разных окнах скачать
  • Excel в раздельных окнах
  • Excel в работе юриста
  • Excel в работе переводчика
  • Excel в работе менеджера по продажам