Невозможно получить доступ к пользовательской недвижимости для документа XML OPN с использованием VBA

StackOverflow https://stackoverflow.com//questions/22043983

Вопрос

пытается получить доступ к CustomdocumentProperty из кода VBA.Я проверяю файл custom.xml, существует пользовательское свойство.Все, что я скучаю?Вот файл DOCM!

Пример документа прилагается

Обновлено

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

With ActiveDocument.CustomDocumentProperties
    .Add Name:="CustomNumber", _
        LinkToContent:=False, _
        Type:=msoPropertyTypeNumber, _
        Value:=1000
    .Add Name:="CustomString", _
        LinkToContent:=False, _
        Type:=msoPropertyTypeString, _
        Value:="This is a custom property."
    .Add Name:="CustomDate", _
        LinkToContent:=False, _
        Type:=msoPropertyTypeDate, _
        Value:=Date
End With
.

Обновленная ссылка на добавление пользовательских полевых документов

Это было полезно?

Решение

в XML (custom.xml), ваш собственность пользовательского документа имеет FMTID="{3DC82474-74E0-4A77-944F-F36D8A5B0E58}" (или что-то в этом роде).

Это должно быть {d5cddd505-2e9c-101b-9397-08002b2cf9ae}, или слово не распознает его как свойство пользовательского документа.

Для вашего обновленного вопроса нет ничего плохого в вашем коде VBA, но в Word есть ошибка. Курица Вы вставляете пользовательские свойства документа, Word не отмечает документ как «грязный», поэтому, если вы не изменили документ любым другим способом, когда он закрывается, он не сохраняет изменения в свойствах, если вы не вружете вручную Диалог недвижимости пользовательских документов. Но вы не можете сделать это, когда работает событие Document_Close.

Чтобы иметь дело с этим, я предлагаю вам поставить

ActiveDocument.Saved = False
.

в конце вашего обработчика события document_close. Кстати, на данный момент ваш код приведет к ошибке, если свойства уже существуют.

Я не верю, что это упоминается в стандарте ISO или даже в документе по информации о внедрении Microsoft (MS-OI29500] .pdf - есть некоторая информация. В последнем, но это не полезно и на самом деле немного запутано.

Некоторые из этих стандартных идентификаторов перечислены здесь Но я не могу ничего найти о том, что начинается с« {3D ». Я думаю, что кто-то создал документ, используя Office Open XML напрямую и только что вставил «любой старый GUID».

Лично я бы пошел в XML и исправить GUID. (Обновление - я попробовал это, но потерпел неудачу каждый раз. Лучше всего начать с нового доктора. И вставить свойство через стандартный пользовательский диалог недвижимости документа, я думаю, что).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top