Поделиться через


Устранение неполадок в решениях Office

Применимо к: Visual Studio

В этой статье описывается, как устранять проблемы, которые могут возникнуть при выполнении различных задач при разработке решений Office в Visual Studio。

Проблемы при создании, обновлении и открытии проектов

При создании или открытии проектов Office могут возникнуть следующие проблемы.

Проблема 1. Невозможно создать проект

Если при попытке создать или открыть проект Office возникает ошибка, но у Visual Studio недостаточно сведений для определения причины, попробуйте закрыть проект, выйти из Visual Studio и начать снова.

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

Проблема 2. Свойства элемента управления теряются при создании проекта на основе документа из существующего проекта

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

Проблема 3. Ошибки при создании проекта книги Excel на основе существующей книги

При создании проекта книги Excel на основе существующей книги может возникнуть сочетание следующих ошибок.

  • Из Excel: "Предупреждение о конфиденциальности. Этот документ содержит макросы, элементы ActiveX, сведения о пакете расширения XML или веб-компоненты. К ним могут относиться персональные данные, которые не могут быть удалены инспектором документов".
  • Из Visual Studio: "Designer не удалось загрузить правильно".

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

  1. Откройте книгу в Excel.
  2. В Excel откройте Центр управления безопасностью.
  3. На вкладке Параметры конфиденциальности снимите флажок Удалить персональные данные из файла при сохранении проверка.
  4. Сохраните книгу и закройте Excel.

Проблема 4. Не удается открыть проект после миграции

После миграции решения Office в Microsoft Office 2010 проект нельзя открыть на компьютере разработки, на котором установлена только система Microsoft Office 2007. Могут возникнуть следующие ошибки.

  • "Один или несколько проектов в решении загружены неправильно. Дополнительные сведения см. в окне вывода.
  • "Не удается создать проект, так как приложение, связанное с этим типом проекта, не установлено на этом компьютере. Необходимо установить приложение Microsoft Office, связанное с этим типом проекта".

Чтобы устранить эту проблему, измените VBPROJ-файл или CSPROJ-файл . Для проекта Word замените на HostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}"HostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}". Для проекта Excel замените на HostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}"HostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}". Для проекта Outlook замените на HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}"HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}".

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

Проблема 5. Ошибки в обновленных проектах уровня документов Office 2003, содержащих Windows Forms элементов управления

Если вы обновляете проект уровня документа Microsoft Office 2003 и документ содержит Windows Forms элементов управления, обновленный проект может иметь ошибки компиляции или среды выполнения. Чтобы избежать этой проблемы, установите visual Studio 2005 Tools for Office Second Edition Runtime на компьютере разработки перед обновлением проекта. Эта версия среды выполнения доступна в виде распространяемого пакета из Центра загрузки Майкрософт на странице Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86).

После завершения обновления проекта можно удалить среду выполнения Visual Studio 2005 Tools for Office Second Edition с компьютера разработки, если она не используется другими решениями Office.

Проблемы при использовании конструкторов

При работе с конструктором документов, книг или листов в проектах уровня документа могут возникнуть следующие проблемы.

Проблема 1. не удалось правильно загрузить Designer

Visual Studio не может открыть конструктор в следующих случаях:

  • Excel или Word уже открыты и отображает модальное диалоговое окно. Чтобы открыть конструктор, проверка, чтобы узнать, открыто ли в Excel или Word модальное диалоговое окно, и закрыть все открытые модальные диалоговые окна. Если модальные диалоговые окна не открыты, могут потребоваться другие действия, прежде чем Excel или Word ответит.
  • В настоящее время выполняется отладка проекта. Чтобы открыть конструктор, остановите или завершите отладку.
  • Надстройка VSTO Для Excel, установленная на компьютере разработки, отображает диалоговое окно при запуске Excel. Чтобы создать проект уровня документа Excel, необходимо сначала отключить надстройку VSTO.

Проблема 2. Элементы управления отображаются в виде черных прямоугольников на документе или листе

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

Проблема 3. Элементы управления в шаблоне Word не отображаются в Visual Studio

Если открыть шаблон Word в конструкторе Visual Studio, элементы управления в шаблоне, которые не соответствуют тексту, могут не отображаться. Это связано с тем, что Visual Studio открывает Word шаблонов в обычном режиме. Чтобы просмотреть элементы управления, выберите меню Вид, наведите указатель мыши на пункт Microsoft Office Word Вид, а затем выберите Пункт Макет печати.

Проблема 4. Команда вставки картинок в конструкторе Visual Studio ничего не делает

Если excel или Word открыт в конструкторе Visual Studio, при нажатии кнопки Картинка на вкладке Иллюстрации на ленте не открывается область задач Картинка. Чтобы добавить картинку, необходимо открыть копию книги или документа, которые находятся в папке проекта main (а не в папке \bin) за пределами Visual Studio, добавить картинку, а затем сохранить книгу или документ.

Проблемы при написании кода

При написании кода в проектах Office могут возникнуть следующие проблемы.

Проблема 1. Некоторые события объектов Office недоступны при использовании C#

В некоторых случаях при попытке получить доступ к определенному событию экземпляра основной сборки взаимодействия (PIA) Office в проекте Visual C# может возникнуть ошибка компилятора, подобная приведенной ниже.

Неоднозначность между Microsoft.Office.Interop.Excel._Application.NewWorkbook и Microsoft.Office.Interop.Excel.AppEvents_Event.NewWorkbook

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

Типы PIA Office с событиями реализуют два интерфейса: основной интерфейс со всеми свойствами и методами и интерфейс событий, содержащий события, предоставляемые объектом . Эти интерфейсы событий используют соглашение об именовании _<objectname>Events<n>Event, например AppEvents_Event и ApplicationEvents2_Event. Если вам не удается получить доступ к событию, которое вы планируете найти в объекте, приведите объект к его интерфейсу событий.

Например, Application объекты имеют NewWorkbook событие и NewWorkbook свойство . Чтобы обработать NewWorkbook событие, приведите Application к интерфейсу AppEvents_Event . В следующем примере кода показано, как это сделать в проекте уровня документа для Excel.

private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
    ((Excel.AppEvents_Event)this.Application).NewWorkbook += 
        new Excel.AppEvents_NewWorkbookEventHandler(ThisWorkbook_NewWorkbook);
}

void ThisWorkbook_NewWorkbook(Excel.Workbook Wb)
{
    // Perform some work here.
}

Дополнительные сведения об интерфейсах событий в основных сборках взаимодействия Office см. в статье Обзор классов и интерфейсов в основных сборках взаимодействия Office.

Проблема 2. Не удается ссылаться на классы PIA Office в проектах, предназначенных для платформа .NET Framework 4 или платформа .NET Framework 4.5

В проектах, предназначенных для платформа .NET Framework 4 или платформа .NET Framework 4.5, код, ссылающийся на класс, определенный в PIA Office, не компилируется по умолчанию. Классы в ЛИЧНЫХ кодах используют класс objectname для>соглашения< об именовании, например DocumentClass и WorkbookClass. Например, следующий код из проекта надстройки VSTO Word не компилируется.

Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;

Этот код приводит к следующим ошибкам компиляции:

  • Visual Basic: "Ссылка на класс DocumentClass не допускается, если его сборка связана с помощью режима No-PIA".
  • Visual C#: "Тип взаимодействия " Microsoft.Office.Interop. Word. Не удается внедрить DocumentClass. Вместо этого используйте применимый интерфейс".

Чтобы устранить эту ошибку, измените код для ссылки на соответствующий интерфейс. Например, вместо ссылки на DocumentClass объект, а на экземпляр Document интерфейса.

Word.Document document = Globals.ThisAddIn.Application.ActiveDocument;

Проекты, предназначенные для платформа .NET Framework 4 или платформа .NET Framework 4.5, по умолчанию автоматически внедряют все типы взаимодействия из ЛИЧНЫХ сведений Office. Эта ошибка компиляции возникает из-за того, что функция внедренных типов взаимодействия работает только с интерфейсами, а не классами. Дополнительные сведения об интерфейсах и классах в основных сборках взаимодействия Office см. в статье Обзор классов и интерфейсов в основных сборках взаимодействия Office. Дополнительные сведения о функции внедренных типов взаимодействия в проектах Office см. в статье Проектирование и создание решений Office.

Проблема 3. Ссылки на классы Office не распознаны

Некоторые имена классов, например Application, находятся в нескольких пространствах имен, таких как Microsoft.Office.Interop.Word и System.Windows.Forms. По этой причине оператор Import/using в верхней части шаблонов проектов содержит сокращенную квалифицированную константу, например:

using Word = Microsoft.Office.Interop.Word;

Для использования инструкции Import/using необходимо различать ссылки на классы Office с помощью квалификатора Word или Excel, например:

Word.Document doc;

Если вы используете неквалифицированные объявления, например, вы получите ошибки.

Document doc;  // Class is ambiguous

Несмотря на то, что вы импортировали пространство имен Word или Excel и имеете доступ ко всем классам в нем, необходимо полностью определить все типы с помощью Word или Excel, чтобы удалить неоднозначность пространства имен.

Проблемы при сборке проектов

При создании проектов Office могут возникнуть следующие проблемы.

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

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

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

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

Проблема 2. Ошибки компилятора возникают после удаления элемента управления NamedRange

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

Проблемы при отладке проектов

При отладке проектов Office могут возникнуть следующие проблемы.

Проблема 1. Запрос на удаление появляется при публикации и установке решения на компьютере разработки

При отладке решения Office может появиться следующая ошибка.

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

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

Проблема 2. Проекты уровня документа, созданные в сетевых расположениях UNC, не выполняются из Visual Studio

Если вы создаете проект уровня документа для Excel или Word в сетевом расположении UNC, необходимо добавить расположение документа в список надежных расположений в Excel или Word. В противном случае настройка не будет загружена при попытке запуска или отладки проекта в Visual Studio. Дополнительные сведения о доверенных расположениях см. в разделе Предоставление доверия документам.

Проблема 3. Потоки не останавливаются правильно после отладки

Проекты Office в Visual Studio следуют соглашению об именовании потоков, которое позволяет отладчику правильно закрыть программу. При создании потоков в решении следует присвоить каждому потоку имя с префиксом VSTA_, чтобы обеспечить правильную обработку этих потоков при остановке отладки. Например, можно задать Name свойство потока, ожидающего VSTA_NetworkListener сетевого события.

Проблема 4. Не удается запустить или отладить решение Office на компьютере разработки

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

Не удалось загрузить настройку, так как не удалось создать домен приложения.

Visual Studio использует Fusion, загрузчик сборок платформа .NET Framework, чтобы кэшировать сборки перед загрузкой решений Office. Убедитесь, что Visual Studio может выполнять запись в кэш Fusion, и повторите попытку. Дополнительные сведения см. в разделе Сборки теневого копирования.

Проблема 5. Ошибка при остановке отладчика в проекте уровня документа после использования правки и продолжения

Если вы используете команду "Изменить" и "Продолжить", чтобы внести изменения в код в проекте уровня документа для Excel или Word во время работы проекта в режиме приостановки, при остановке отладчика может появиться диалоговое окно со следующим сообщением об ошибке.

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

Независимо от того, выбрано ли в диалоговом окне значение Да или Нет, Visual Studio завершает процесс Excel или Word и останавливает отладчик. Чтобы остановить отладку проекта без отображения этого диалогового окна, закройте Excel или Word напрямую, а не останавливайте отладчик в Visual Studio.

Ссылки