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


Устранение неполадок в решениях 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: "Не удалось правильно загрузить конструктор".

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

  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 для Office на компьютере разработки. Эта версия среды выполнения доступна в виде распространяемого пакета в Центре загрузки Майкрософт на странице Среда выполнения набора средств Microsoft Visual Studio 2005 для Office (второй выпуск) (VSTO 2005 SE) (x86).

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

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

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

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

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 нажатие кнопки "Изображение клипа" на вкладке "Иллюстрации" на ленте не открывает область задач "Искусство клипов". Чтобы добавить картинку, необходимо открыть копию книги или документа, которая находится в главной папке проекта (а не в папке \bin ) за пределами Visual Studio, добавить картинку, а затем сохранить книгу или документ.

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

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

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

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

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

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

Типы основных сборок взаимодействия 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. Не удается ссылаться на классы Office PIA в проектах, предназначенных для платформа .NET Framework 4 или платформа .NET Framework 4.5

В проектах, предназначенных для платформа .NET Framework 4 или платформа .NET Framework 4.5, код, ссылающийся на класс, определенный в Office PIA, не компилируется по умолчанию. Классы в пиА используют класс имени объекта соглашения <об именовании, например 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.

Ссылки