Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Защита листа с помошью VBA Добавлено: 08.04.09 07:23  

Автор вопроса:  anna
Guys, помогите плиз с одной проблемой. Только начинаю свое знакомство с программирование в Excel, посему немного сложновато((( Файл содержит макрос, который при нажатии, проверяет имя юзера с списком разрешенных юзеров,и если имя совпадает, макрос распароливает следующий лист с калькуляциями и перекидывает туда юзера (если нет, то файл закрывается). Как сделать так, чтобы лист с калькуляциями, по-прежнему оставался запароленным, кроме нескольких ячеек. Заранее спасибо!!!!!

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #1 Добавлено: 08.04.09 09:33
А можно пример кода?

Ответить

Номер ответа: 2
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #2 Добавлено: 08.04.09 09:52
Зайди на запароленый лист, установи защиту листа с разрешением изменения нужных диапазов. В коде макроса, найди строчку
Sheets(N).unprotect Password:= "Bla-Bla-Bla" 'удали строку полностью

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 08.04.09 10:53
anna,
Чтобы часть листа была доступна, надо для требуемых ячеек/диапазонов на листе снять защиту
Можно макросом, можно и вручную - когда защита листа отключена, выделяешь ячейки/диапазоны, нажимаешь Формат ячеек (Ctrl+1) и на вкладке Защита снимаешь галочку "Защищаемая ячейка", потом снова ставишь защиту листа - все. Теперь пользователю дозволено работать в строго определенных ячейках (можешь выделить их цветом заливки для ясности юзера).

Ты сказала "калькуляции". Магическое слово, как часто мне приходится с ними работать.. )) Родная стихия можно сказать )) А в какой ты отрасли трудишься, если не секрет?

Ответить

Номер ответа: 4
Автор ответа:
 anna



Вопросов: 1
Ответов: 4
 Профиль | | #4 Добавлено: 09.04.09 03:39
Вот пример кода

Sub UserName_test()

Dim Current_user As Variant
     ;Dim Allowed_users As Variant
    
    Current_user = Environ("username";)
    Allowed_users = "........."

    
             
    If InStr(1, Allowed_users, Current_user) = 0 Then
    
    MsgBox "Sorry, you do not have access rights to use this file. The file will be closed automatically.", vbCritical, "Error!"
    
    With ActiveWorkbook
    .RunAutoMacros xlAutoClose
    .Close (Savechanges = False)
    End With


    Else
    Application.ScreenUpdating = False
    Sheets("Sensitivity";).Unprotect Password:=".........."
    
     
    With Application
        .Calculation = xlManual
        .MaxChange = 0.001
    End With
Sheets("Sensitivity";).Select
Application.ScreenUpdating = True

    End If



    
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 anna



Вопросов: 1
Ответов: 4
 Профиль | | #5 Добавлено: 09.04.09 07:42
Получилось!!! Так просто оказывается))))))))

Ответить

Номер ответа: 6
Автор ответа:
 anna



Вопросов: 1
Ответов: 4
 Профиль | | #6 Добавлено: 09.04.09 07:56
to mc-black....

Вручную не получилось бы((( ибо пароль в макросе не мэтчился бы с паролей на листе - тобиш error, а если бы пароли были бы одинаковыми, то макрос просто распороливал бы полностью следующий лист...Но эт уже не важно, сейчас все получилось))))))))

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

Ответить

Номер ответа: 7
Автор ответа:
 anna



Вопросов: 1
Ответов: 4
 Профиль | | #7 Добавлено: 09.04.09 07:57
Спасибо огромное!!!!!!!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам