Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102

Защита книги и кода excel

19.08.2011, 12:21. Показов 9083. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот новый вопросик:
задача защитить код и доступ к записям листов методом макросов. Вот как я это реализовал:
1. код защищается естественно в окне проектов, думаю обсуждать не стоит.
2. проблема в том что можно отключить макросы и получить доступ к книге, для этого защищаем листы перед выходом:
код:
Visual Basic
1
2
3
4
5
6
7
8
Private Sub ProgrammeClose_Click()
Sheets("1").Protect "xxx"
Sheets("2").Protect "xxx"
Sheets("3").Protect "xxx"
Sheets("4").Protect "xxx"
Sheets("5").Protect "xxx"
ActiveWorkbook.Close
End Sub



теперь, если он отключит макросы, то ничего в книге изменить/копировать не сможет
3. при открытии файла:
код:
Visual Basic
1
2
3
4
5
6
7
8
Private Workbook_Open()
Sheets("1").Unprotect "xxx"
Sheets("2").Unprotect "xxx"
Sheets("3").Unprotect "xxx"
Sheets("4").Unprotect "xxx"
Sheets("5").Unprotect "xxx"
UserForm1.Show
End Sub


Т.о. данные можно будет изменять только через userforms

4. теперь надо, чтобы пользователь не нажал на крестик в userform:
код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Private Declare Function GetWindowLong _
    Lib "user32" _
            Alias "GetWindowLongA" ( _
            ByVal hwnd As Long, _
            ByVal nIndex As Long) _
As Long
 
Private Declare Function SetWindowLong _
    Lib "user32" _
        Alias "SetWindowLongA" ( _
            ByVal hwnd As Long, _
            ByVal nIndex As Long, _
            ByVal dwNewLong As Long) _
As Long
 
 
Private Declare Function FindWindowA _
    Lib "user32" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) _
As Long
 
Private Const GWL_STYLE As Long = -16
Private Const WS_SYSMENU As Long = &H80000
 
 
Private Sub UserForm_Initialize()
Dim lOldStyle As Long
Dim lNewStyle As Long
Dim hW As Long
 
    hW = FindWindowA(vbNullString, Me.Caption)
    lOldStyle = GetWindowLong(hW, GWL_STYLE)
    lNewStyle = lOldStyle Xor WS_SYSMENU
    
    SetWindowLong hW, GWL_STYLE, lNewStyle
     
End Sub
 
'это для того, чтобы при alt+f4 закрывалась не форма, а вся программа с сохранением результатов
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ThisWorkbook.Close SaveChanges:=True
End Sub


задача не только защитить данные от юзера, но и не дать ему сделать что-то, что "скривило" бы программу.

Собственно вопрос: все ли я учел, или юзер по своему неразумению все же сможет найти лазейку? может есть более элегантные решения?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2011, 12:21
Ответы с готовыми решениями:

Защита книги excel 2007
Хочу чтоб Если книгу excel 2007 c названием BOOK1 перепишут в другой компьютер, там его не могли открить.

Защита листа,книги, диапазона ячеек в Excel
Какие есть офисные средства защиты табличных документов: книги, листа, диапазона ячеек, и как защитить????

Как из С# программно обработать Run-time error '1004' VBA кода книги Excel
Может кто подскажет, как программно в C# завершить работу макроса в книге Excel? Существует книга со встроенными макросами, которая...

20
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 12:23
Все что вы написали это для малограмотных юзеров....
А так вся ваша защита ломается на раз!!!
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 12:28  [ТС]
да я понимаю. я же говорю, все это не для хакеров, а для юзеров. менеджера, выражаясь точнее
есть предложения улучшить, или просто будете говорить, что все это хлам?
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 12:30
А вы конвертируйте ваш эксель в exe и там защитите ваш код!
Програмка для этого XLtoEXE
Либо переведите ваш проект на VB
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 12:36  [ТС]
Цитата Сообщение от Watcher_1 Посмотреть сообщение
А вы конвертируйте ваш эксель в exe и там защитите ваш код!
как это решает проблему после того как менеджер уже открыл программу, эта программа шифрует его несимметричным 512 кб ключом? как же она тогда работает?
как это решает проблему доступа к данным книги?
ему ведь в любом случае надо в ней работать, в exe она или в xlsm!

Добавлено через 1 минуту
Цитата Сообщение от Watcher_1 Посмотреть сообщение
Либо переведите ваш проект на VB
это конечно выход, но лень тем более лучше уж было сразу в нем писать. я же говорю задача не столько против взлома, сколько против неосторожных действий и нездорового любопытства
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 12:37
Цитата Сообщение от eutelg Посмотреть сообщение
как это решает проблему после того как менеджер уже открыл программу, эта программа шифрует его несимметричным 512 кб ключом? как же она тогда работает?
как это решает проблему доступа к данным книги?
ему ведь в любом случае надо в ней работать, в exe она или в xlsm!
Он так же будет работать как с эксель файлом, только доступа к коду не будет, при попытке открыть редактор кода файл закроется
1
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 12:40  [ТС]
ну что ж. как вариант усиления защиты кода. спасибо. а остальная работа уже в самой программе непосредственно?
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 12:42
Совершенно верно!
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 12:44  [ТС]
а остальные методы? достаточно этого, чтобы он не ткнул куда-нибудь и получил доступ к книге?
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 12:47
Я же говорю редактор кода полностью блокируется
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 12:51  [ТС]
да с кодом все понятно. я имею в виду, когда менеджер открыл файл и начинает в нем работать. код ему неподвластен. положим. но он работает с userform, кнопки там жмет и т.п. я закрыл крестики и alt+f4, чтобы он не закрыл окна userform. есть ли еще варианты, как войти в книгу без помощи кода?
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 12:54
Когда будите отображать форму обязательно сделайте ее vbModal
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 13:04  [ТС]
только что протестил вашу прогу. работать работает, но глючит. самое важное, что при нажатии кнопки на userform "закрыть программу" она закрывает только userform вместо того, чтобы закрыть файл и сохранить, что дает доступ к книге.
Цитата Сообщение от Watcher_1 Посмотреть сообщение
Когда будите отображать форму обязательно сделайте ее vbModal
Добавлено через 4 минуты
что от этого изменится?
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 13:10
Цитата Сообщение от eutelg Посмотреть сообщение
только что протестил вашу прогу. работать работает, но глючит. самое важное, что при нажатии кнопки на userform "закрыть программу" она закрывает только userform вместо того, чтобы закрыть файл и сохранить, что дает доступ к книге.


Добавлено через 4 минуты
что от этого изменится?
А вы выключите эту кнопку и создайте свою при нажатии на которую будет закрываться книга...

Добавлено через 3 минуты
Допишите в форму этот код
Visual Basic
1
2
3
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = True
End Sub
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 13:10  [ТС]
Цитата Сообщение от Watcher_1 Посмотреть сообщение
А вы выключите эту кнопку и создайте свою при нажатии на которую будет закрываться книга...
это и есть моя кнопка, при нажатии на которую будет закрываться книга!!!
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 13:12
А какой код в кнопке?
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 13:26  [ТС]
вот файл. я его покоцал конечно. там 35 форм, здоровый модуль и куда конф инфо на самом деле. но для наших целей пойдет.

пароль для кода - 1111

единственный способ, по крайней мере я так думаю, без использования всяких хакерских программ, это отключить макросы до открытия файла и ввести пароль (ну или взломать) для получения доступа к коду
Вложения
Тип файла: xls учет.xls (45.0 Кб, 76 просмотров)
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 13:45
Ну в принципе да
0
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 102
19.08.2011, 14:03  [ТС]
я тут взглянул и удивился: тот файл, что я скинул весит 56 кб, а исходный (где 35 userform, кода на туеву хучу стр. только в модуле) с поддержкой макросов в 2010-м всего 114 кб! 2010 так хорошо сжимает дынные?
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
19.08.2011, 14:06
Ну 35 userform это все описано текстом, поэтому они не могу занимать много места в пустом виде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2011, 14:06
Помогаю со студенческими работами здесь

Защита книги
доброго времени суток. Вопрос. Запаролил книгу, но узнал что открыть ее не представляет никакой трудности. Интересует почему такой код...

Защита книги и макрос
Добрый день уважаемые форумчане. У меня довольно интересный для меня вопрос, если допустим поставить на книгу пароль на открытие...

Защита книги от переноса на другой ПК
У меня проблема, как защитить книгу от незаконного переноса на другой пк? Если кто знает помогите. Заранее благодарен.

особая защита общей книги
Добрый день ! Есть необходимость создать книгу эксель со следующими параметрами защиты и общим доступом : 1) лист 1 должен быть...

Общий доступ и защита книги в Office 2003
У меня работает программа в EXCEL написана средствами VBA. Сегодня поставили ещё один комп соеденили в сеть. Дал разрешение для файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru