Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2009, 17:02   #1
corematt
 
Регистрация: 26.02.2009
Сообщений: 7
Восклицание Нужна помощь по макросу VBA

Добрый день, друзья!

Помогиите, пожалуйста. Есть макрос, который при создания документа с шаблона открывает пользовательскую форму. Форма заполняется, жмется кнопка-на основе той формы редактируется документ. Проблема в том, что документ надо автоматически запаролить или зашифровать, чтобы после его закрытия\сохранения он был уже запаролен.

Можно ли в самом макросе прописать процедуры паролирования? Например, чтобы при закрытии ActiveDocument вызывалась форма ввода пароля и документ сохранялся запароленным для последующего открытия?
Если так нельзя, то какие еще могут быть способы?
Спасибо!
corematt вне форума Ответить с цитированием
Старый 26.02.2009, 17:41   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Ну вот на скорую руку. Создает документ, запрашивает для него пароль, и сохраняет. Все. Более подробно для вашего случая можно написать, если видеть исходный макрос.
Код:
Sub setpass()
  With Application.Documents.Add
    .Password = InputBox("Введите пароль для документа")
    .Close True
  End With
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 26.02.2009, 18:00   #3
corematt
 
Регистрация: 26.02.2009
Сообщений: 7
По умолчанию

Спасибо! Постараюсь пояснить.

Весь макрос, практически такой:

Private Sub CommandButton_Click()
бла бла бла
End Sub

плюс модуль вызова формы:
Sub AutoNew()
Dim oF As Myform
Set oF = New Myform
oF.Show
Set oF = Nothing
End Sub

Нужно, чтобы после выполнения всех процудур после нажатия на кнопку выполнялось автоматическое сохранение и задача пароля.
Т.е. алгоритм:
1. Вызываем создание документа из шаблона
2. Открывается форма
3. Заполнение полей формы(вручную). Тут же можно сразу поле с паролем добавить.
4. Жмем кнопку "Заполнить". После нажатия на нее из полей формы по закладкам в шаблоне вставляется текст.
5. Сохранение документа с заданым паролем ЛИБО вызов формы для сохранения документа и ввода пароля.

Суть в том, чтобы пользователь не мог сохранить документ незапароленым, т.е. ввод пароля должен быть принудительным.

Надеюсь, смог объяснить. Как тогда будет вглядеть блок? И куда его нужно вставлять в коде?
corematt вне форума Ответить с цитированием
Старый 26.02.2009, 18:19   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

После того, как вы заполнили все свои закладки, что происходит? Форма просто закрывается? Тогда нужно добавить код для сохранения документа. Например, такой. Если пароль не указать, то документ просто закроется без сохранения изменений, и придется все начинать заново. Если пароль укажут, то появится диалог сохранения файла и затем документ закроется. От диалога можно избавится, если перед методом Close добавить метод SaveAs и указать точное имя файла. В этом случае файл сохранится и закроется без всяких диалогов.
Код:
  Dim sPass As String
  With Имя_вашего_документа или переменная, в которую он записан
    sPass = InputBox("Введите пароль для документа")
    If sPass <> "" Then
      .Password = sPass: .Close wdSaveChanges
    Else: .Close wdDoNotSaveChanges: End If
  End With
Но лучше, чтобы вы не жадничали и дали посмотреть исходный макрос. Можно в личку, если стесняетесь
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 26.02.2009, 19:03   #5
corematt
 
Регистрация: 26.02.2009
Сообщений: 7
По умолчанию

Вот сам шаблон с тим макросом

После заполнения форма закрывается, остается заполненный данными документ. Нужно, чтобы после закрытия формы уже запароленный документ сохранился куда-нибудь по умолчанию(напр. рабочий стол) и остался открым для чтения перед пользователем(то в идеале, но как вариант, чтобы документ после сохранения и шифрования просто закрылся и открыть его можно было бы только зная пароль). Т.е. пользователь заполнив и нажав на кнопку формы получил бы Сохраненный куда-то, запароленный на редактирование\открытие документ, который только он(зная пароль) мог бы открыть.
corematt вне форума Ответить с цитированием
Старый 26.02.2009, 19:14   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от corematt Посмотреть сообщение
Вот сам шаблон с тим макросом

После заполнения форма закрывается, остается заполненный данными документ. Нужно, чтобы после закрытия формы уже запароленный документ сохранился куда-нибудь по умолчанию(напр. рабочий стол) и остался открым для чтения перед пользователем(то в идеале, но как вариант, чтобы документ после сохранения и шифрования просто закрылся и открыть его можно было бы только зная пароль). Т.е. пользователь заполнив и нажав на кнопку формы получил бы Сохраненный куда-то, запароленный на редактирование\открытие документ, который только он(зная пароль) мог бы открыть.
Приду домой посмотрю подробнее.
Часам к 9 по Москве сделаю.
Зачем столько лишних пробелов?
Вот еще Sasha_Smirnov не видел…
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 26.02.2009, 19:20   #7
corematt
 
Регистрация: 26.02.2009
Сообщений: 7
По умолчанию

В документе или в коде?=) документ - скан с бумаги, прогнанный через FineReader-форматирование никакое. А код-так удобнее.
Спасибо вам большое! Буду ждать!
corematt вне форума Ответить с цитированием
Старый 26.02.2009, 20:31   #8
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию И я тоже жду (а то что-то наша ветка травой поросла)

Спасибо за пояснение про пробелы в сканированном тексте!

(Теперь ясно, что файнридер не такой уж и файн райтер! А что с него взять, он же ридер.)
Sasha_Smirnov вне форума Ответить с цитированием
Старый 26.02.2009, 21:26   #9
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Ну вот так примерно.
Если не укажут пароль или нажмут «Отмена» при сохранении, — документ закроется без лишних разговоров. Если пароль укажут, то появится окно с предложением сохранить документ. После сохранения документ будет виден, но редактировать его будет нельзя. Пароль на открытие останется.
Нужен ли пароль на снятие защиты от редактирования?
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 15.04.2009 в 14:44.
viter.alex вне форума Ответить с цитированием
Старый 26.02.2009, 22:47   #10
corematt
 
Регистрация: 26.02.2009
Сообщений: 7
По умолчанию

Класс! То что нужно! Спасибо огромное!

Да, но редактировать нельзя, даже зная пароль. За то отвечает строка ".Protect wdAllowOnlyReading"?

А как сделать пароль на редактирование?

Блин, на многих форумах писал-никто не мог помочь. А здесь прямо в точку! Супер
corematt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с MS Word с помощью VBA. Нужна помощь. ereality Microsoft Office Word 5 28.05.2008 18:50
Пользовательская форма к макросу Flangini Microsoft Office Excel 6 23.04.2008 13:39
Нужна помощь! Teodor_Bagwell Общие вопросы Delphi 6 11.02.2007 16:45