Страница 1 из 1

Глюк CustomDocumentProperties (Word 2003,VBA)

Добавлено: 10 авг 2008, 23:49
Aent
Есть у меня в документах специальное свойство !DSP. Есть мой VBA AddIN который выводит
для пользователя UserForm и на основании действий пользователя это свойство модифицирует.
Причём искомый документ (шаблон) в это время открыт в режиме редактирования надстройки.
Т.е для шаблона xxx.dot запускается
winword /q /l xxx.dot
пути я для простоты опускаю.
Мой макрос отрабатывает. Я захожу в Файл-> Cвойства->Прочие: !DSP и вижу правильно
изменённое значение свойства.
Значение в коде устанавливалось с помощью конструкции

Код: Выделить всё

[B]' Н Е  Р А Б О Т А Е Т  ![/B]
ActiveDocument.CustomDocumentProperties("!DSP").Value = NewValue
Cохраняем шаблон Файл->Сохранить (можно и Cохранить как)
Открываем файл заново. И ....обнаруживаем что свойство !DSP НЕ ИЗМЕНИЛОСЬ !
Более того. Вместо изменения значения можно удалить это свойство методом .delete а затем
создать заново с новым значением методом .add. В этом случае вы обнаружите в файле свойство !DSP cо значением vbNullString. :(

Код: Выделить всё

[B]' Н Е  Р А Б О Т А Е Т ![/B]
ActiveDocument.CustomDocumentProperties("!DSP").Delete
ActiveDocument.CustomDocumentProperties.Add Name:="!DSP", LinkToContent:=False, _
Value:=NewValue, Type:=msoPropertyTypeString
Расследование показало, что для того что бы новое значение свойства сохранилось в файле
необходима модификация самого текста документа.
Т.е достаточно, скажем, в конце документа вставить и удалить пробел и пользовательское свойство отлично сохраняется. :(

Код: Выделить всё

' Р А Б О Т А Е Т  !
ActiveDocument.CustomDocumentProperties("!DSP").Value = NewValue
With Selection
      .EndKey Unit:=wdStory
      .TypeText Text:="_"
      .TypeBackspace
      .HomeKey Unit:=wdStory
End With

Нет слов.