Четене на персонализирани полета от шаблон на документ на Word

Написах код за добавяне на персонализирани полета към шаблон на документ на 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;
    }

person cm5053    schedule 09.09.2014    source източник