Я написал некоторый код для добавления настраиваемых полей в шаблон документа Word на основе информации в Как добавить пользовательские свойства в документ Word с помощью .NET 4?
Это работает, но выдает исключение, если поле уже существует. Поэтому я хотел бы прочитать существующие настраиваемые поля, чтобы проверить, что уже есть.
Я написал функцию на основе информации на http://msdn.microsoft.com/en-us/library/dhxe2d75(v=vs.110).aspx
но он падает на первой итерации цикла foreach.
Если настраиваемых свойств нет, исключение не выдается.
Что я делаю не так?
Первое случайное исключение типа System.InvalidCastException в неизвестном модуле. Дополнительная информация: невозможно привести COM-объект типа «System.__ComObject» к типу интерфейса «Microsoft.Office.Core.DocumentProperty». Эта операция завершилась неудачно, так как вызов QueryInterface компонента COM для интерфейса с IID "{2DF8D04E-5BFA-101B-BDE5-00AA0044DE52}" завершился неудачей из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) .
private bool PropertyExists(Word.Document Document, string PropertyName)
{
bool _bRet = false;
foreach (Microsoft.Office.Core.DocumentProperty _property in Document.CustomDocumentProperties)
{
if (_property.Name == PropertyName)
{
_bRet = true;
}
}
return _bRet;
}
ReadDocumentProperty
, но она выдает исключение в строкеproperties = myWordDoc.CustomDocumentProperties;
Это действительно та же проблема, что и раньше. - person cm5053   schedule 10.09.2014