Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проверка настроек безопасности в Excel макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка настроек безопасности в Excel макросом (Макросы/Sub)
Проверка настроек безопасности в Excel макросом
light26 Дата: Воскресенье, 19.02.2017, 12:48 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Всем привет. Давно столкнулся с вопросом изменения уровня безопасности в Excel.
Как сделать пользователю инструкцию об изменении настроек безопасности, уровень знания Excel которого примерно такой: в ячейках вносит значения, считает сумму на калькуляторе и указывает ее в итоговой строке?
Делал так, как в приложенном файле, но получалось довольно громоздко...
На днях на просторах интернета наткнулся на такой макрос[vba]
Код
Sub Enable_AccessVBOM_and_Macro()
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _
           "\Excel\Security\"

    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"

    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
End Sub
[/vba],но так я в них не в зуб ногой, не могу понять как он работает.
Автор утверждает, что макрос избавляет пользователя от ежедневного уведомления об «опасных» макросах и меняет уровень безопасности в Excel на «низкий» при следующем запуске, а уведомления об отключенных макросах (с предложением их включить) появляться не будут.

Подскажите так ли это (а то мало ли, может это код-вредитель :) какой-то) и куда его вставлять: в личную книгу макросов или в "ЭтаКкнига"?

И еще, я думаю, что было бы правильнее, если бы макрос сначала проверял уровень безопасности по такому алгоритму:
если запуск макросов запрещен, то открывается лист с сообщением "В настройках безопасности макросы отключены. Перезапустите Excel для работоспособности файла". Так сказать, по умолчанию. Если запуск макросов разрешен, то код, убедившись в этом, удаляет (или скрывает "Sheets("Лист1").Visible = False") лист с сообщением о настройках безопасности и останавливает запуск макроса, изменяющего уровень безопасности.
Если я правильно понимаю, то макрос будет таким[vba]
Код
Sub За_работу()
    Dim reply As Integer
    reply = MsgBox("Вы будете перемещены на рабочий лист и сможете приступить к работе", vbYesNo, "Запрос на продолжение")
        If reply = vbYes Then
        Application.EnableEvents = False
       Sheets("Лист1").Visible = False
              ElseIf reply = vbNo Then Exit Sub
        End If
End Sub
Sub Enable_AccessVBOM_and_Macro()
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _
           "\Excel\Security\"

    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"

    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
End Sub
[/vba]


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Воскресенье, 19.02.2017, 14:27
 
Ответить
СообщениеВсем привет. Давно столкнулся с вопросом изменения уровня безопасности в Excel.
Как сделать пользователю инструкцию об изменении настроек безопасности, уровень знания Excel которого примерно такой: в ячейках вносит значения, считает сумму на калькуляторе и указывает ее в итоговой строке?
Делал так, как в приложенном файле, но получалось довольно громоздко...
На днях на просторах интернета наткнулся на такой макрос[vba]
Код
Sub Enable_AccessVBOM_and_Macro()
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _
           "\Excel\Security\"

    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"

    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
End Sub
[/vba],но так я в них не в зуб ногой, не могу понять как он работает.
Автор утверждает, что макрос избавляет пользователя от ежедневного уведомления об «опасных» макросах и меняет уровень безопасности в Excel на «низкий» при следующем запуске, а уведомления об отключенных макросах (с предложением их включить) появляться не будут.

Подскажите так ли это (а то мало ли, может это код-вредитель :) какой-то) и куда его вставлять: в личную книгу макросов или в "ЭтаКкнига"?

И еще, я думаю, что было бы правильнее, если бы макрос сначала проверял уровень безопасности по такому алгоритму:
если запуск макросов запрещен, то открывается лист с сообщением "В настройках безопасности макросы отключены. Перезапустите Excel для работоспособности файла". Так сказать, по умолчанию. Если запуск макросов разрешен, то код, убедившись в этом, удаляет (или скрывает "Sheets("Лист1").Visible = False") лист с сообщением о настройках безопасности и останавливает запуск макроса, изменяющего уровень безопасности.
Если я правильно понимаю, то макрос будет таким[vba]
Код
Sub За_работу()
    Dim reply As Integer
    reply = MsgBox("Вы будете перемещены на рабочий лист и сможете приступить к работе", vbYesNo, "Запрос на продолжение")
        If reply = vbYes Then
        Application.EnableEvents = False
       Sheets("Лист1").Visible = False
              ElseIf reply = vbNo Then Exit Sub
        End If
End Sub
Sub Enable_AccessVBOM_and_Macro()
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _
           "\Excel\Security\"

    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"

    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
End Sub
[/vba]

Автор - light26
Дата добавления - 19.02.2017 в 12:48
_Boroda_ Дата: Воскресенье, 19.02.2017, 18:56 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
если запуск макросов запрещен, то открывается лист

Если макросы запрещены, то ничего открываться не будет. Открывается-то макросом, а они запрещены.
Можно при предыдущем закрытии этого файла макросом скрывать все листы (лучше суперскрывать), а оставлять видимым только тот лист, на котором текст про разрешение макросов. А когда пользователь макросы разрешит, то открываются остальные листы, а этот скрывается.
Здесь на форуме куча кодов и файлов с таким функционалом. Много кто выкладывал, и я тоже несколько раз. Поищи

Подскажите так ли это (а то мало ли, может это код-вредитель

Ну, думаю, что Игорю можно доверять http://excelvba.ru/code/Security
А вставлять неважно куда, важно, чтобы этот макрос ОДИН раз был запущен на компьютере


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
если запуск макросов запрещен, то открывается лист

Если макросы запрещены, то ничего открываться не будет. Открывается-то макросом, а они запрещены.
Можно при предыдущем закрытии этого файла макросом скрывать все листы (лучше суперскрывать), а оставлять видимым только тот лист, на котором текст про разрешение макросов. А когда пользователь макросы разрешит, то открываются остальные листы, а этот скрывается.
Здесь на форуме куча кодов и файлов с таким функционалом. Много кто выкладывал, и я тоже несколько раз. Поищи

Подскажите так ли это (а то мало ли, может это код-вредитель

Ну, думаю, что Игорю можно доверять http://excelvba.ru/code/Security
А вставлять неважно куда, важно, чтобы этот макрос ОДИН раз был запущен на компьютере

Автор - _Boroda_
Дата добавления - 19.02.2017 в 18:56
light26 Дата: Воскресенье, 19.02.2017, 19:33 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Если макросы запрещены, то ничего открываться не будет
я неправильно выразился. Все верно, если макросы запрещены, то ничего не откроется кроме листа с текстом (остальные-то скрыты). А если макросы разрешены, то скрытый лист появляется, а лист с сообщением удаляется или скрывается


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Если макросы запрещены, то ничего открываться не будет
я неправильно выразился. Все верно, если макросы запрещены, то ничего не откроется кроме листа с текстом (остальные-то скрыты). А если макросы разрешены, то скрытый лист появляется, а лист с сообщением удаляется или скрывается

Автор - light26
Дата добавления - 19.02.2017 в 19:33
light26 Дата: Воскресенье, 19.02.2017, 19:35 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Ну, думаю, что Игорю можно доверять
блин, ну от тебя ниче не скроешь )))


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Ну, думаю, что Игорю можно доверять
блин, ну от тебя ниче не скроешь )))

Автор - light26
Дата добавления - 19.02.2017 в 19:35
bmv98rus Дата: Воскресенье, 19.02.2017, 19:52 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
light26,

1. Все это естесвенно относится к случаю когда политиками не назначены жестко параметры безопасности для MS Office. .
2. Если отключены по умолчанию и надо включить, то тут или VBS/BAT/CMD делать но или парится с определением ветки исходя из версии установленного офиса, или чохом по всем пройтись. Ключь пользовательский, изменить все можно. К стати можно прям на листе сделать ссылку на файл который надо запустить.
3. ну а отображение инструкции - Александр все написал.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеlight26,

1. Все это естесвенно относится к случаю когда политиками не назначены жестко параметры безопасности для MS Office. .
2. Если отключены по умолчанию и надо включить, то тут или VBS/BAT/CMD делать но или парится с определением ветки исходя из версии установленного офиса, или чохом по всем пройтись. Ключь пользовательский, изменить все можно. К стати можно прям на листе сделать ссылку на файл который надо запустить.
3. ну а отображение инструкции - Александр все написал.

Автор - bmv98rus
Дата добавления - 19.02.2017 в 19:52
light26 Дата: Воскресенье, 19.02.2017, 20:02 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Если отключены по умолчанию и надо включить, то тут или VBS/BAT/CMD делать но или парится с определением ветки исходя из версии установленного офиса, или чохом по всем пройтись. Ключь пользовательский, изменить все можно. К стати можно прям на листе сделать ссылку на файл который надо запустить
Я тут мало что понял. как я и писал выше, я в макросах ни в зуб ногой. Ну, где знаю какой параметр поменять, там лезу. А так: шаг влево/вправо - расстрел... А что, пакетником можно изменить настройки безопасности в excel?


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Воскресенье, 19.02.2017, 20:11
 
Ответить
Сообщение
Если отключены по умолчанию и надо включить, то тут или VBS/BAT/CMD делать но или парится с определением ветки исходя из версии установленного офиса, или чохом по всем пройтись. Ключь пользовательский, изменить все можно. К стати можно прям на листе сделать ссылку на файл который надо запустить
Я тут мало что понял. как я и писал выше, я в макросах ни в зуб ногой. Ну, где знаю какой параметр поменять, там лезу. А так: шаг влево/вправо - расстрел... А что, пакетником можно изменить настройки безопасности в excel?

Автор - light26
Дата добавления - 19.02.2017 в 20:02
bmv98rus Дата: Воскресенье, 19.02.2017, 20:18 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
light26,

В данном случае ничего страшного нет если занести по всем от 10.0 до 16.0 , а то и 17.0 на всякий случай. VBS файл

[vba]
Код
On Error Resume Next
For i = 10 To 17 ' все версии MS Office от 10 (XP) до 16 (2016) + одна в запас :-)
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & i & _
        ".0\Excel\Security\"
    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"
    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
Next
[/vba]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеlight26,

В данном случае ничего страшного нет если занести по всем от 10.0 до 16.0 , а то и 17.0 на всякий случай. VBS файл

[vba]
Код
On Error Resume Next
For i = 10 To 17 ' все версии MS Office от 10 (XP) до 16 (2016) + одна в запас :-)
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & i & _
        ".0\Excel\Security\"
    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"
    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
Next
[/vba]

Автор - bmv98rus
Дата добавления - 19.02.2017 в 20:18
light26 Дата: Воскресенье, 19.02.2017, 20:25 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
bmv98rus, сейчас попробую...
...
не, не работает. [vba]
Код
On Error Resume Next
For i = 10 To 17 ' все версии MS Office от 10 (XP) до 16 (2016) + одна в запас :-)
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & i & _
        ".0\Excel\Security\"
    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"
    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
Next
[/vba]
Скрин ошибки
P.S.Параметры безопасности настроены жестко


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Воскресенье, 19.02.2017, 20:42
 
Ответить
Сообщениеbmv98rus, сейчас попробую...
...
не, не работает. [vba]
Код
On Error Resume Next
For i = 10 To 17 ' все версии MS Office от 10 (XP) до 16 (2016) + одна в запас :-)
    Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & i & _
        ".0\Excel\Security\"
    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"
    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
Next
[/vba]
Скрин ошибки
P.S.Параметры безопасности настроены жестко

Автор - light26
Дата добавления - 19.02.2017 в 20:25
bmv98rus Дата: Воскресенье, 19.02.2017, 20:42 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
light26,
Я имел в виду, запустить это через VBS script
К сообщению приложен файл: excelMacroEnabl.vbs (1.0 Kb)


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеlight26,
Я имел в виду, запустить это через VBS script

Автор - bmv98rus
Дата добавления - 19.02.2017 в 20:42
light26 Дата: Воскресенье, 19.02.2017, 21:02 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
bmv98rus, а, вон оно че :)
Теперь работает. Только включить безопасность нельзя )))))))))))))


Я не волшебник. Я только учусь
 
Ответить
Сообщениеbmv98rus, а, вон оно че :)
Теперь работает. Только включить безопасность нельзя )))))))))))))

Автор - light26
Дата добавления - 19.02.2017 в 21:02
bmv98rus Дата: Воскресенье, 19.02.2017, 21:29 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
light26,

то есть политиками запрещено? Если так, то к админам. Проверить можно посмотрев наличие ключей в ветке
software\policies\microsoft\office\14.0\excel\security соответвующей версии .

Но проверить наличие ключей в реестре не помешает. по пути куда скриптом занесли.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 19.02.2017, 21:37
 
Ответить
Сообщениеlight26,

то есть политиками запрещено? Если так, то к админам. Проверить можно посмотрев наличие ключей в ветке
software\policies\microsoft\office\14.0\excel\security соответвующей версии .

Но проверить наличие ключей в реестре не помешает. по пути куда скриптом занесли.

Автор - bmv98rus
Дата добавления - 19.02.2017 в 21:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка настроек безопасности в Excel макросом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!