powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка отключены ли макросы
25 сообщений из 27, страница 1 из 2
Проверка отключены ли макросы
    #33575796
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написал маленькую игрульку "Lines" для excel, кста оч. красивая получилась и безопасная.

есть один вопрос:
когда пользоватеь ее открывает, а макросы у него отключены, то на экране он видит игровое поле, а сделать ничего не может.
Как ему дать понять / предложить включить макросы? при этом сами макросы, как вы понимаете не работают?
я думаю все сталкивались... поделитесь опытом.

Я пока писал - придумал 1 штуку:
сделать Shape во весь лист и большими букваи на нем нацарапать:
"включи макросы, юзерь!" А в макросах при открытии книги этот shape скрывать, тогда он будет оставаться, только, когда макросы отключены =) вот.
Еще предложения будут?
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33575907
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    On Error Resume Next

    Dim objShell
    Dim vatReturn

    Set objShell = CreateObject("WScript.Shell")
    
    vatReturn = objShell.RegRead( _
      "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Security\Level")
      
    If vatReturn =  3  Then
        MsgBox "Поддержка макросов в Excel отключена!"
    End If
    
    ' Сами меняем, без участия пользователя.

    objShell.RegWrite _
      "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Security\Level", _
       1 , "REG_DWORD"

    MsgBox "Поддержка макросов в Excel включена! :)"

Только версию Excel поправь. 9.0 - 2000, 10.0 - 2002 и т.д.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33575933
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2
Только версию Excel поправь. 9.0 - 2000, 10.0 - 2002 и т.д.
Гм, знать бы еще эту верию заранее. На разных машинах разные версии могут чтоять, и программа должна сама определять, какая версия установлена.
Первое, что приходит в голову - долна существовать ветка реестра
"HKEY_CURRENT_USER\Software\Microsoft\Office\ХХХ\Excel"
Но после некорректного удаления предыдущей версии офиса могут существовать несколько таких веток...
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576010
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pafluntiyнаписал маленькую игрульку "Lines" для excel, кста оч. красивая получилась и безопасная.

есть один вопрос:
когда пользоватеь ее открывает, а макросы у него отключены, то на экране он видит игровое поле, а сделать ничего не может.
Как ему дать понять / предложить включить макросы? при этом сами макросы, как вы понимаете не работают?
я думаю все сталкивались... поделитесь опытом.

Я пока писал - придумал 1 штуку:
сделать Shape во весь лист и большими букваи на нем нацарапать:
"включи макросы, юзерь!" А в макросах при открытии книги этот shape скрывать, тогда он будет оставаться, только, когда макросы отключены =) вот.
Еще предложения будут?

поделись програмкой. плиз.

Visual Basic Project

программно Уровень Безопасности
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576068
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмку могу по почте кинуть, т.к. архив весит 255 kb.
с реестром это хор. Но как выполнить этот код? если макросы отключены? или я не понял?
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576074
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PafluntiyПрограмку могу по почте кинуть, т.к. архив весит 255 kb.
с реестром это хор. Но как выполнить этот код? если макросы отключены? или я не понял?
Вот этот код-то как раз и включает макросы.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576081
Код: plaintext
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
' Первый вариант - "В лоб".

    'On Error Resume Next

    'objShell.RegWrite _
    '  "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Security\Level", _
    '  1, "REG_DWORD"

    'objShell.RegWrite _
    '  "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Security\Level", _
    '  1, "REG_DWORD"

    'objShell.RegWrite _
    '  "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\Level", _
    '  1, "REG_DWORD"

' Второй вариант - определим версию Office через WMI.

Sub X2()
    Dim objWMIService
    Dim objApp
    Dim strComputer
    Dim colApps

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set colApps = objWMIService.ExecQuery _
      ("Select * from Win32_Product Where Caption Like '%Microsoft Office%'")
        
    For Each objApp In colApps
        Debug.Print "Caption: " & objApp.Caption
        Debug.Print "Version: " & objApp.Version
    Next
End Sub

' Третий вариант - создадим экземпляр.

Sub X3()
    Dim objExcel As Object

    Set objExcel = CreateObject("Excel.Application")
    
    Debug.Print "Version: " & objExcel.Version
    Debug.Print "Build: " & objExcel.Build
    
    objExcel.Quit
End Sub

' Четвертый вариант - проверим через реестр.

Sub X4()
    On Error Resume Next

    Dim objShell
    Dim vatReturn

    Set objShell = CreateObject("WScript.Shell")
    
    vatReturn = objShell.RegRead( _
      "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Application\CurVer\")
    
    Debug.Print "Version: " & vatReturn
End Sub
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576124
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёпт, а куда этот код вписать?! как его заставить сработать, когда макросы еще не вклчились?
я чуствую себя дебилом =(
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576172
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кста, см. почту, выслал
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576262
Ты кому выслал-то? :)
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576286
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PafluntiyЁпт, а куда этот код вписать?! как его заставить сработать, когда макросы еще не вклчились?
я чуствую себя дебилом =(
не стоит
если уровень высокий то из самого Excel не возможно поменять уровень
я написал скрипт ".vbs" и положил его в автозагрузку
наверно возможно написать ехе-ик что бы делал эту манипуляцию.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
On Error Resume Next
Dim OShell
Set OShell = CreateObject("WScript.Shell")
OShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\Level",  1 , "REG_DWORD"
OShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Security\Level",  1 , "REG_DWORD"
OShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Security\Level",  1 , "REG_DWORD"

Set OShell = Nothing

на мыле пусто!!!
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576299
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а так лучше? я не тебе случайно отправил =))
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576306
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pafluntiyа так лучше? я не тебе случайно отправил =))
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576334
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык в том то и смысл, что должен быть 1 xls а пользователь должен совершать минимум действий, если у него макросы откючены, или хотя бы знать точно, чего от него хотят
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576464
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pafluntiyсделать Shape во весь лист и большими букваи на нем нацарапать:
"включи макросы, юзерь!" А в макросах при открытии книги этот shape скрывать, тогда он будет оставаться, только, когда макросы отключены =) вот.

имхо лучше не придумаешь.

а passw дашь
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33576740
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor

а passw дашь

Нет не дашь. но на конкретные вопросы с удовольствием отвечу, даже код местами выложу.

и БОЛЬШАЯ просьба, не вскрывать код. а то всем захочется.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33577201
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pafluntiy vkodor

а passw дашь

Нет не дашь. но на конкретные вопросы с удовольствием отвечу, даже код местами выложу.

и БОЛЬШАЯ просьба, не вскрывать код. а то всем захочется.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33578972
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PafluntiyПрограмку могу по почте кинуть, т.к. архив весит 255 kb.
с реестром это хор. Но как выполнить этот код? если макросы отключены? или я не понял?
та же проблема с отключением - включением
если что найду путное - пришлю
потому как надо же будет как то рассчитаться за
Вашу программу :)
Пришлите пожалуйста :)
kosinec@metalurgs.LV
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33579258
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно, надо где-то выложить, похвастаться... хвастаюсь вот тут
не обращайте внимание, это у меня по работе форум =)) там смотрите 5-6 сообщение казется.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33581757
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Pafluntiy]Понятно, надо где-то выложить, похвастаться... хвастаюсь вот тут
не обращайте внимание, это у меня по работе форум =)) там смотрите 5-6 сообщение казется.[/quoе]
играет ..
спасибо !
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33581798
Avtopic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Pafluntiy
Все о чем идет разговор подразумевает принудительное разрешение макросов.
Что, по-моему, изначально неправильный подход.

Я предлагаю следующее (идея не моя читал где-то в инете).
Для листа Visible = xlSheetVeryHidden можно отключить только программным путем
или в Visual Basic Editor-е.
Автор заранее выставляет VeryHidden для тех листов, которые надо скрыть, в случае если макросы отключены, и оставляет видимым
только лист, на котором валяется предложение разрешить макросы.
Если макросы запрещены, то пользователь видит это сообщение. Остальные листы спрятаны.
Если макросы разрешены, то в событии Workbook_Open стоит процедура для снятия VeryHidden с остатних листов, и она работает.
Резюме: тот, кто хочет работать с данной книгой должен разрешить макросы. И никакого принудительного программного запрета на запрет макросов.
Для проверки: один раз откройте эту книгу с “запрещенным макросом”, а потом с “разрешенным макросом”.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #33583182
Pafluntiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДА, или такой Вариант, токма у меня просто форма, а у Вас целый лист. А форму если скрыть, то тоже ее не видно, кажется стандартными методами.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Проверка отключены ли макросы
    #36315447
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё на лист, который виден только при отключенных макросах, внедрить как объект командный файл (cmd, bat), либо скриптовый (vbs) и написать инструкцию "кликните по данному объекту мышкой".

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


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

P.S. По поводу флеша, есть у меня файлик экселевский, при его открытии (даже при высоком уровне безопасности) в нем стартует флеш игра.
Каким образом её туда внедрили, я так и не понял, мне самому не удалось внедрить в Excel флешку, чтобы она при открытии работала. Так-же не удалось извлечь эту игру из экселевского файла в чистый флеш-файл.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #36315991
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчёт vbs - не помню, читал где-то или сам обнаружил (наверное сам )
Положите рядом testsec.xls и testsec.vbs и запустите testsec.vbs. И плевать ему на уровень безопасности. По крайней мере на ХР СП3 и офисе2000.
Как сделано:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objShellApp = CreateObject("Shell.Application") 
ExcelPath = objFSO.GetParentFolderName(WScript.ScriptFullName) 
Set objExcel = CreateObject("Excel.Application")
Set wb = objExcel.Workbooks.Open (ExcelPath & "\testsec.xls")
objExcel.Visible = True
objExcel.Application.OnTime Now, "one"
Set objExcel = Nothing

Вполне можно использовать - сделать юзверю ярлык с надпись "MyBest.xls" на vbs и порядок.
...
Рейтинг: 0 / 0
Проверка отключены ли макросы
    #36316064
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,
Извращения с таймером не нужны. Если книга открывается через OLE то макросы включаются автоматически.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка отключены ли макросы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]