Имя: Пароль:
1C
 
Работа с COM объектом Word.Application + защита ворд
,
0 Pandoch
 
25.11.19
14:53
Добрый день! Стоит задача на основании  имеющегося файла ворд с установленной защитой  создать новый документ через ком объект, чтобы настройки защиты сохранились.
Код создания документа ворд есть, но защиту он  копирует. Какой метод нужно использовать? Это возможно вообще?
На данный момент при создании вызывается такая функция:

.COMСоединение.ActiveDocument.CopyStylesFromTemplate(Макет.ИмяФайла);

Но параметры защиты таким образом не копируются.
1 gSha
 
25.11.19
14:56
ну наверное идешь по объектам на которых нужна защита и ставишь кодом какая она будет и пароль .. пароль правда всегда виден в коде. во всяком случае в экселе это так.
2 Pandoch
 
25.11.19
15:11
Как получить доступ через настройки COM Объекта к параметрам защиты?
3 dk
 
25.11.19
15:20
тебе свою защиту поставить или пароли чтобы старые остались?
у меня шаблон открытый, а итоговый закрыт, тока поля для ввода оставлены

Док.Protect(2, -1, "***");    //wdAllowOnlyFormFields = 2;
Док.SaveAs2(ИмяДляСохранения, wdFormatXMLDocument, 0, "", 0, "*********");
4 Pandoch
 
25.11.19
15:39
дело в том, что есть ворд шаблона и я на основе него создаю новый ком объект и  копирую какие-то свойства. Но свойства защиты не копируются и это нужно дописать, то есть защитить точно также, как было защищено в ШАБЛОНЕ ворд. Чтобы в новом ворде тоже была такая же защита.
5 gSha
 
25.11.19
16:04
ну, мы тоже не ленивые и мы можем написать, что если они не копируются, то никто не мешает обойти все эти свойства и повторить к ним метод протект с нужными атрибутами.
6 dk
 
25.11.19
16:12
а не проще тогда не шаблон хранить а готовый макет просто его копировать как файл и менять уже копию
7 Pandoch
 
25.11.19
16:40
(3) а что здесь есть wdFormatXMLDocument?
8 Pandoch
 
25.11.19
16:41
(6) проще было бы, если бы с нуля разрабатывалось) а здесь уже прописано все формирование нового документа ворд на основе шаблонов, присоединение областей и проч, и оч не хочется это все переделывать
9 Pandoch
 
25.11.19
17:29
COMОбъект.Documents.Open(ИмяВременногоФайла,0,0,0,Пароль)  - вот так делаю, на основе имеющегося запароленного шаблона. Но когда потом обращаюсь к методу COMОбъект.ActiveDocument.HasPassword   - говорит = Ложь...
10 Сияющий в темноте
 
25.11.19
18:48
Шаблон превращается в документ,именно для этого шаблон и нужен.
Просто,потом нужно установить защиту еще раз,когда документ сформирован.
И,насколько я помню,у последнего ворда отдельно защита от пользователя и отдельно от доступа через код.
11 Pandoch
 
25.11.19
21:55
в общем для простейших типов защиты 0 и 3 отработало) да, заново делаю Protect перед отображением с параметрами пароль и тип защиты
12 dk
 
26.11.19
07:46
(7) wdFormatXMLDocument = 0; это тип сохраняемого документа
Основная теорема систематики: Новые системы плодят новые проблемы.