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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 22:24   #1
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию запретить сделанные изменения

помогите довести до ума скрипт:

Private Sub Document_Open()
If Day(Date) >= "12.01.2010" Then
Selection.WholeStory
Selection.Text = StrReverse(Selection.Text)
ActiveDocument.Save
??
End If
End Sub

какой саб запретит отмену операции и дальнейшие изменения документа ??
npocmop вне форума Ответить с цитированием
Старый 09.11.2010, 08:03   #2
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

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

Также не факт, что открытый документ является активным. А значит, используя Selection и ActiveDocument можно попортить чужой документ. Лучше использовать ThisDocement.

Защита документа от изменений:
Код:
ThisDocument.Protect Type:=wdAllowOnlyReading, Password:="пароль"
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 09.11.2010, 16:22   #3
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию Спасибо за дельные советы!

как быть, если нужно не просто запретить редактирование, а в такой последовательности:
1. после наступления указанной даты перевернуть символы
2. сохранить документ без спроса и
3. запретить редактирование и дальнейшее сохранение
4. при попытках 3 - активировать обращение к собственнику (по мылу или др.) - напоминающий, что платежка-то еще не прошла
5. в случае нарушения 3 - удалить документ без спроса мимо корзины

Суть в том что результат моей работы - расчет в экселе и отчет в ворде.
Расчет - это как исходник для программиста - его я удаляю после истечения даты сразу, минуя корзину. В экселе работает такой код:

Private Sub Workbook_Open()
ActiveWindow.DisplayWorkbookTabs = True
If Date <= #12/01/2010# Then Exit Sub
With ThisWorkbook
.Saved = True
.ChangeFileAccess xlReadOnly
On Error Resume Next
Kill .FullName
.Close False
End With
End Sub

А doc - это всего лишь куча букаф, поэтому надо чтобы против переворачивания теста была рабочая таблетка, нужен более гибкий макрос.

И у меня получается цикличность нелепая:
- открыл документ - текст реверснулся-сохранился-запрет исправлений..
- открыл - текст вернулся - и т.д....

Последний раз редактировалось npocmop; 09.11.2010 в 16:51. Причина: добавление
npocmop вне форума Ответить с цитированием
Старый 09.11.2010, 19:36   #4
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Приблизительно так:
Код:
Private Sub Document_Open()
Const c_Pass$ = "пароль"
    With ThisDocument
        ' наличие блокировки
        If .ProtectionType = wdNoProtection Then
            ' проверка
            If Date <= CDate("08.11.2010") Then Exit Sub
            ' блокировка
            .Range.Text = StrReverse(.Range.Text)
            .Protect Type:=wdAllowOnlyReading, Password:=c_Pass
            .Save
        ' уже заблоктрован
        Else
            ' здесь код отправки E-Mail и т.п.
        End If
        ' напоминание
        If InputBox("Введите пароль") <> c_Pass Then
            .Close
        Else
            ' разблокировка
            .Unprotect Password:=c_Pass
            .Range.Text = StrReverse(.Range.Text)
            .Save
        End If
    End With
End Sub
Еще нужно где-то хранить инфу о том, что пароль был введен правильно. Или, чтобы не возится, вместо разблокировки копировать все данные в новый документ, а блокированный удалять.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/

Последний раз редактировалось Вождь; 09.11.2010 в 19:50.
Вождь вне форума Ответить с цитированием
Старый 09.11.2010, 20:51   #5
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию Muchas Gracias, Вождь!

Спасибо, всё работает и довольно шустро коверкает довольно объемные файлы.
Представляю лица жадин их тоже улыбнёт, тока не сразу
Веселый получился скрипт.. он будет нести с собой улыбки

Может еще заменять графики на удивленные фото с вебкамер ноутов пользователей - тока подловить момент исполнения StrReverse .
Такое вообще возможно в среде vb ?
npocmop вне форума Ответить с цитированием
Старый 10.11.2010, 03:30   #6
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

вопрос кому это надо ? снимается это блокировка на раз софтом широко доступным в сети. так что кому будет нужно - документ сдраконят
bdfy вне форума Ответить с цитированием
Старый 10.11.2010, 04:54   #7
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

ну и что, сам тоже люблю подраконить - ломать не строить
Зато не каждый статичный бухгалтер заказчиков будет нахаляву получать методики и подходы. Бывало частенько, особенно крупные компании, блин, их продукцию полстраны потребляет, а они жмутся и давятся людям за работу оплатить..
жаль только что все эти вещи работают после разрешения включения макросов.. я так понимаю что все методы автоматизации таких скриптов больше похожи на уловки типа: нажми на кнопку получишь на водку
npocmop вне форума Ответить с цитированием
Старый 10.11.2010, 06:33   #8
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от npocmop Посмотреть сообщение
...похожи на уловки типа: нажми на кнопку получишь на водку...
В версиях Word, где есть хорошая защита документа от взлома и защита макросами делается на раз. Для этого достаточно реализовать принцип "с отключенными макросами документ недоступен". Достигается это тем, что макрос и разблокирует документ, а пока макрос не запустишь - кукиш тебе
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 10.11.2010, 08:50   #9
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

Цитата:
Сообщение от Вождь Посмотреть сообщение
реализовать принцип "с отключенными макросами документ недоступен".
а намекните хотя бы как
... языком vba

Последний раз редактировалось npocmop; 10.11.2010 в 09:47.
npocmop вне форума Ответить с цитированием
Старый 10.11.2010, 10:29   #10
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Так реализация может быть любой, а идею я изложил. Например, достаточно защитить документ паролем и вставить пару макросов:
Код:
Private Sub Document_Open()
    ThisDocument.Unprotect Password:="пароль"
End Sub
Private Sub Document_Close()
    ThisDocument.Protect Type:=wdAllowOnlyReading, Password:="пароль"
    ThisDocument.Save
End Sub
Осталось защитить собственно макросы
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть или запретить для изменения nicuav Microsoft Office Excel 17 16.02.2012 02:22
Запретить сворачивание формы voron.kz Помощь студентам 3 05.11.2010 09:07
Запретить редактирование в DBGrid MixanMM БД в Delphi 12 10.05.2010 20:28
Запретить изменения Книги после истечения месячного срока komar73 Microsoft Office Excel 0 31.03.2009 11:01