Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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, 09:03   #2
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 370
Репутация: 223

icq: 397882017
По умолчанию

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

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

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

как быть, если нужно не просто запретить редактирование, а в такой последовательности:
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 в 17:51. Причина: добавление
npocmop вне форума   Ответить с цитированием
Старый 09.11.2010, 20:36   #4
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 370
Репутация: 223

icq: 397882017
По умолчанию

Приблизительно так:
Код:
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
Еще нужно где-то хранить инфу о том, что пароль был введен правильно. Или, чтобы не возится, вместо разблокировки копировать все данные в новый документ, а блокированный удалять.
__________________
Макросы на заказ и готовый пакет - mtdmacro.ru

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

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

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

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

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

icq: 397882017
По умолчанию

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

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

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

icq: 397882017
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


09:34.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.