Устранение ошибок в решениях Office
При выполнении следующих задач во время разработки решений Office в Visual Studio могут возникнуть проблемы.
Создание, обновление и открытие проектов
Использование конструкторов
Создание кода
Создание проектов
Отладка проектов
Создание, обновление и открытие проектов
При создании или открытии проектов Office могут возникнуть следующие ошибки.
Не удается создать проект
Попытка создать или открыть проект Office вызвала ошибку, но у Visual Studio недостаточно сведений, чтобы определить причину этой ошибки.Попробуйте закрыть проект, завершить работу Visual Studio, а затем запустить приложение повторно.
При попытке создания проекта уровня документа может оказаться, что другой документ с тем же именем, что и документ в новом проекте, уже открыт в Excel или Word.Убедитесь, что закрыты все остальные экземпляры Excel или Word.
Свойства элементов управления теряются при создании нового проекта на основе документа из текущего проекта
При создании нового проекта Office, основанного на документе из существующего проекта, свойства элементов управления, настроенные для того документа, не копируются в новый проект.Необходимо вручную сбросить свойства для существующих элементов управления.С другой стороны можно сохранить свойства элементов управления, создав копию существующего проекта, вместо того чтобы создавать новый, или загружать существующий проект в новое решение (в режиме конструктора), а затем скопировать и вставить элементы управления из существующего документа в новый.
Ошибки при создании проекта книги Excel на основе существующей книги
Если новый проект книги Excel создается на основе существующей книги, могут возникнуть следующие ошибки.
От Excel: "Предупреждение о конфиденциальной информации: документ содержит макросы, элементы управления ActiveX, данные пакета расширения XML или веб-компоненты.Они могут включать личные сведения, которые нельзя удалить с помощью инспектора документов."
От Visual Studio: "Не удалось правильно загрузить конструктор."
Эти ошибки могут произойти при попытке создать проект на основе книги, из которой с помощью инспектора документов была удалена личная информация.Во избежание этой ошибки перед созданием проекта выполните следующие действия.
Откройте книгу в Excel.
Откройте центр управления безопасностью в Excel.
На вкладке Параметры конфиденциальности снимите флажок Удалять личные сведения из свойств файла при сохранении.
Сохраните книгу и закройте Excel.
Невозможно открыть проект после миграции
После миграции решения 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.
Ошибки в обновленных проектах уровня документа Office 2003 с элементами управления Windows Forms
Если обновляется проект уровня документа Microsoft Office 2003 и документ содержит элементы управления Windows Forms, могут возникнуть ошибки компиляции или времени выполнения в обновленном проекте.Во избежание этого перед обновлением проекта установите набор инструментов Visual Studio 2005 Tools для Office Second Edition Runtime на компьютере разработки.Эта версия среды выполнения доступна в качестве повторно распространяемого пакета в Центре загрузки Майкрософт по адресу Microsoft Visual Studio 2005 Tools для среды исполнения Office Second Edition (сборка 8.0.50727.891) (x86).
По завершении обновления проекта можно удалить набор средств Visual Studio 2005 для Office Second Edition Runtime с компьютера разработки, если он не используется никакими другими решениями Office.
Использование конструкторов
При работе с конструктором документов, книг или листов в проектах уровня документа могут возникнуть следующие ошибки.
Не удалось правильно загрузить конструктор
Visual Studio не удается открыть конструктор в следующих случаях.
Приложение Excel или Word уже открыто и отображает модальное диалоговое окно.Чтобы открыть конструктор, проверьте, не открыто ли в приложении Excel или Word модальное диалоговое окно, затем закройте открытые модальные диалоговые окна.Если модальные диалоговые окна не отображаются, значит, необходимо выполнить еще какое-нибудь действие, прежде чем будет получен отклик Excel или Word.
Проект находится в состоянии отладки.Чтобы открыть конструктор, остановите отладчик или завершите отладку.
Надстройка Excel, которая установлена на компьютере разработчика, отображает диалоговое окно при запуске Excel.Чтобы создать проект уровня документа Excel, необходимо сначала отключить надстройка.
Элементы управления в документ или листе отображаются в виде черных прямоугольников
Если элементы управления группируются в документе или листе, Visual Studio уже не может их распознать.К сгруппированным элементам управления невозможно получить доступ в окне Свойства, и они отображаются в документе или листе в виде черных прямоугольников.Чтобы восстановить функциональные возможности элементов управления, необходимо их разгруппировать.
Элементы управления шаблона Word не отображаются в Visual Studio
При открытии шаблона Word в конструкторе Visual Studio элементы управления шаблона, не являющиеся встроенными в текст, могут не быть видимыми.Это происходит потому, что Visual Studio открывает шаблон Word в режиме Обычный.Чтобы отобразить элементы управления, нажмите меню Вид, наведите курсор на Вид Microsoft Office Word и выберите Разметка страницы.
При вставке клипа в конструкторе Visual Studio ничего не происходит
При открытии Excel или Word в конструкторе Visual Studio нажатие кнопки Коллекция картинок на вкладке ленты Иллюстрации не приводит к открытию области задач Коллекция картинок.Чтобы добавить коллекцию картинок, необходимо открыть копию книги или документа, находящегося в главной папке проекта (не в папке \bin), вне Visual Studio и добавить коллекцию картинок с последующим сохранением книги или документа.
Создание кода
При создании кода в проектах Office могут возникнуть следующие ошибки.
Некоторые события объектов Office недоступны при использовании C#
В некоторых случаях при попытке доступа к определенному событию экземпляра типа основной сборки взаимодействия Office в проекте C# могут возникнуть следующие ошибки компиляции.
"Неоднозначность между "Microsoft.Office.Interop.Excel._Application.NewWorkbook" и "Microsoft.Office.Interop.Excel.AppEvents_Event.NewWorkbook"."
Эта ошибка возникает при попытке доступа к событию с тем же именем, что и друге свойство или метод объекта.Чтобы получить доступ к событию, необходимо привести объект к его интерфейсу событий.
Типы основных сборок взаимодействия Office с событиями реализуют два интерфейса: основной интерфейс со всеми свойствами и методами и интерфейс событий, содержащий предоставляемые объектом события.В этих интерфейсах событий действуют следующие правила наименования: имя_объектаСобытияn_Событие, например Microsoft.Office.Interop.Excel.AppEvents_Event и Microsoft.Office.Interop.Word.ApplicationEvents2_Event.При невозможности доступа к событию, которое ожидалось найти в объекте, необходимо привести объект к соответствующему интерфейсу событий.
Например, объекты Microsoft.Office.Interop.Excel.Application имеют событие NewWorkbook и свойство NewWorkbook.Чтобы обработать событие NewWorkbook, приведите объект Microsoft.Office.Interop.Excel.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 см. в разделе Overview of Classes and Interfaces in the Office Primary Interop Assemblies.
Классы не могут ссылаться на сборки взаимодействия office в проектах, целевой объект .NET Framework 4 или .NET Framework 4.5
В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, код, который ссылается на класс, определенный в сборке взаимодействия office не будет компилироваться по умолчанию.В классах в основных сборках взаимодействия действуют следующие правила наименования: имя_объектаКласс, например DocumentClass и WorkbookClass.Например, невозможно скомпилировать следующий код из проекта надстроек Word.
Dim document As Word.DocumentClass = Globals.ThisAddIn.Application.ActiveDocument
Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;
Выполнение этого кода приводит к следующим ошибкам компиляции.
В Visual Basic: "Не допускается ссылка на класс "DocumentClass", если его сборка связана с использованием режима No-PIA."
В Visual C#: "Внедрение типа взаимодействия "Microsoft.Office.Interop.Word.DocumentClass" невозможно.Используйте вместо него доступный интерфейс."
Чтобы разрешить эту ошибку, измените код так, чтобы он содержал ссылку на соответствующий интерфейс.Например, вместо того чтобы ссылаться на объект DocumentClass, создайте ссылку на экземпляр интерфейса Document.
Dim document As Word.Document = Globals.ThisAddIn.Application.ActiveDocument
Word.Document document = Globals.ThisAddIn.Application.ActiveDocument;
Проекты, целевой объект .NET Framework 4 или .NET Framework 4.5, автоматически внедряет любые типы взаимодействия из основных сборок взаимодействия office по умолчанию.Эта ошибка компиляции имеет место, поскольку встроенные типы взаимодействия работают только с интерфейсами, но не классами.Дополнительные сведения об интерфейсах и классах в основных сборках взаимодействия Office см. в статье Overview of Classes and Interfaces in the Office Primary Interop Assemblies.Дополнительные сведения о встроенных типах взаимодействия в проектах Office см. в разделе Проектирование и создание решений Office.
Ссылки на классы Office, которые невозможно распознать
Некоторые имена классов, например Application находятся в разных пространствах имен, таких как Microsoft.Office.Interop.Word и System.Windows.Forms.По этой причине оператор Imports/using вверху шаблонов проекта содержит краткую уточняющую константу, например:
Imports Word = Microsoft.Office.Interop.Word
using Word = Microsoft.Office.Interop.Word;
Для подобного использования оператора Imports/using необходимо разграничивать ссылки на классы Office с квалификатором Word или Excel, например:
Dim doc As Word.Document
Word.Document doc;
Использование неразграниченного объявления приведет к ошибкам, например:
Dim doc As Document ' Class is ambiguous
Document doc; // Class is ambiguous
Даже, несмотря на то, что пространство имен Word или Excel было импортировано и имеется доступ ко всем классам внутри него, необходимо полностью указать все типы с Word или Excel для устранения неоднозначности в пространстве имен.
Создание проектов
При создании проектов Office могут возникнуть следующие ошибки.
Невозможно выполнить построение проекта уровня документа, основанного на документе с ограниченными разрешениями
Visual Studio не может выполнить построение проекта уровня документа, основанного на документе с ограниченными разрешениями.Если проект содержит документ с ограниченными решениями, проект не будет компилироваться, а в окне Список ошибок отобразится следующее сообщение.
"Ошибка при добавлении настройки."
Если необходимо добавить документ с ограниченными решениями, при разработке и построении решения используйте документ без ограничений.Затем после публикации решения примените ограниченные разрешения к документу в месте публикации.
Ошибки компилятора при удалении элемента управления NamedRange
Если элемент управления NamedRange удаляется из листа, не являющегося активным листом в конструкторе, автоматически создаваемый код не может быть удален из проекта, что приводит к ошибкам компилятора.Чтобы убедиться в том, что код был удален, перед удалением элемента управления NamedRange, необходимо всегда выбирать лист, содержащий данный элемент управления, чтобы сделать лист активным.Если автоматически создаваемый код не удаляется при удалении элемента управления, можно удалить код в конструкторе, активировав и изменив его, для того чтобы лист был помечен как измененный.При повторном построении проекта код удаляется.
Отладка проектов
При отладке проектов Office могут возникнуть следующие ошибки.
При публикации и установке решения на компьютер разработчика появляется предложение удалить решение
При отладке решения Office может отобразиться следующая ошибка.
"Не удается установить настройку, поскольку установлена другая версия, которую нельзя обновить из данного местоположения."
Эта ошибка означает, что на компьютере разработчика уже опубликовано и установлено решение Office.Чтобы избежать появления этого сообщения, перед отладкой удалите решение из списка установленных программ на компьютере.Кроме того, можно создать на компьютере разработчика другую учетную запись пользователя, чтобы протестировать установку опубликованного решения.
Проекты уровня документа, созданные в сетевых расположениях UNC, не запускаются из Visual Studio
При создании проекта уровня документа для Excel или Word в сетевом расположении UNC необходимо добавить расположение документа в список надежных расположений в Excel или Word.В противном случае при попытке запустить или отладить проект в Visual Studio настройка не будет загружена.Дополнительные сведения о надежных расположениях см. в разделе Присвоение уровня доверия документам.
Неправильная остановка потоков после отладки
Проекты Office в Visual Studio следуют правилам именования потоков, что позволяет средству отладки правильно закрывать программу.При создании потоков в решении необходимо каждому потоку присваивать имя с префиксом "VSTA_" для правильной обработки при остановке отладки.Например, свойству потока Name, ожидающего сетевого события, можно присвоить имя VSTA_NetworkListener.
Не удается запустить или начать отладку решения Office на компьютере для разработки
Если не удается запустить или разработать проект Office на компьютере для разработки, возможно появление следующего сообщения об ошибке.
"Не удалось загрузить настройку, так как не удалось создать домен приложения."
Visual Studio использует Fusion, загрузчик сборок платформы .NET Framework, для кэширования сборок перед загрузкой решений Office.Убедитесь, что Visual Studio может писать в кэш Fusion, и повторите попытку.Дополнительные сведения см. в разделе Теневое копирование сборок.
Ошибки при остановке отладчика в проекте уровня документа после использования функции "Изменить и продолжить"
Если для внесения изменений в код в проекте уровня документа для Excel или Word используется функция "Изменить и продолжить", пока проект находится в режиме приостановки выполнения, при последующей остановке отладчика может отобразиться диалоговое окно со следующим сообщением об ошибке.
"Завершение процесса в его текущем состоянии может привести к нежелательным результатам, включая потерю данных и нестабильность системы."
При нажатии кнопок Да или Нет в диалоговом окне Visual Studio завершает процесс Excel или Word и останавливает отладчик.Чтобы остановить отладку проекта, не отображая это диалоговое окно, выполните непосредственный выход из Excel или Word вместо того, чтобы останавливать отладчик в Visual Studio.
См. также
Задачи
Устранение неполадок, связанных с безопасностью решений Office
Основные понятия
Устранение неполадок, связанных с развертыванием решения Office