Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2013, 10:38   #1
Maverik2k
 
Регистрация: 22.04.2013
Сообщений: 3
По умолчанию Разграничение прав доступа в рамках одного листа.

Здравствуйте.

Есть таблица из нескольких граф. В каждой графе присутствует поле "Автофильтр". Необходимо, что-бы при открытии документа появлялось окошко с логином. После ввода логина отрабатывалось условие по автофильтру первой графы. Так-же вся графа "лочилась" на изменение. Все остальные части таблицы доступны для изменения и применения автофильтров по другим графам. Если ввести так называемый пароль суперпользователя, то для редактирования становится доступен весь документ.

Excel - 2007 и выше.
Вложения
Тип файла: zip 001.zip (20.9 Кб, 7 просмотров)
Maverik2k вне форума Ответить с цитированием
Старый 22.04.2013, 13:20   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Не нашел в вашем файле ни единой строки кода...
Предлагаете сделать все за вас?

Решение по окошку ввода логина/пароля есть здесь:
http://excelvba.ru/tools/Authentication

Когда с ним разберетесь, и встроите в свой файл, - поможем с автофильтром.
EducatedFool вне форума Ответить с цитированием
Старый 22.04.2013, 14:55   #3
Maverik2k
 
Регистрация: 22.04.2013
Сообщений: 3
По умолчанию

Здравствуйте.

Нет не предлагаю.

Самый простой вариант сортировки с одним условием у меня получилось таким.

Код:
Sub Select()

ActiveSheet.Unprotect

       Selection.AutoFilter Field:=1, Criteria1:=Array("Германия", "Россия", "Япония"), Operator:=xlFilterValues
    
    ActiveSheet.Columns("B:C").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveSheet.Range("B2").Select
    
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells

End Sub

Дальнейшее развитие мне видится в таком ключе:

Код:
Sub Selct()

ActiveSheet.Unprotect

Select Case Application.UserName

    Case "User 1"
       Selection.AutoFilter Field:=1, Criteria1:=Array("Германия", "Россия", "Япония"), Operator:=xlFilterValues

    Case "User 2"
       Selection.AutoFilter Field:=1, Criteria1:=Array("Кипр", "Перу"), Operator:=xlFilterValues
    
    Case "User 3"
       Selection.AutoFilter Field:=1, Criteria1:=Array("Англия", "Австралия"), Operator:=xlFilterValues
 
   Case Else
      Cells.Locked = True

End Select
    
    ActiveSheet.Columns("B:C").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveSheet.Range("B2").Select
   
    
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells


End Sub
А дальше, мысль останавливается (с)

Есть 8 пользователей, 7 со своими кругами ответственности, 1 администратор всего дела. и надо что-бы при вводе соответствующего логина или пароля отрабатывал соответствующий Case.

За предложенное Вами решение с пользователями спасибо, попробую разобраться, но мне кажется для моего случая оно перегружено.

(Программированием никогда сильно не занимался, а VB в особенности)
Maverik2k вне форума Ответить с цитированием
Старый 23.04.2013, 12:00   #4
Maverik2k
 
Регистрация: 22.04.2013
Сообщений: 3
По умолчанию

разграничение доступа решил таким образом

Код:
Private Sub Workbook_Open()

Dim Userses As String

Userses = Application.InputBox(Prompt:="Ведите имя пользователя", Type:=2)

ActiveSheet.Unprotect

Select Case Userses

    Case "User1"
       Selection.AutoFilter Field:=1, Criteria1:=Array("Германия", "Россия", "Япония", "="), Operator:=xlFilterValues

    Case "User2"
       Selection.AutoFilter Field:=1, Criteria1:=Array("Кипр", "Перу", "="), Operator:=xlFilterValues
    
    Case "User3"
       Selection.AutoFilter Field:=1, Criteria1:=Array("Ангилья", "Австралия", "="), Operator:=xlFilterValues
 
   Case Else
      Cells.Locked = True
      
End Select
    
    ActiveSheet.Columns("B:C").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveSheet.Range("B2").Select
   
    
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
    ActiveSheet.EnableSelection = xlUnlockedCells


End Sub
Но вот не могу решить проблему лочинья документа, если пользователь нажал на крестик комбобокса или ввел что-то от балды, и с суперпользователем пока не до конца понятно как реализовать.
Maverik2k вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разграничение прав на области листа Chelentano Microsoft Office Excel 11 07.02.2013 10:33
БД Access и разграничение прав доступа chandrasecar БД в Delphi 0 22.05.2011 23:22
Разграничение доступа torrtik Помощь студентам 4 23.04.2011 00:42
Разграничение прав пользователей в Firebird artemavd БД в Delphi 9 16.09.2010 19:18
Разграничение прав доступа Len@09 БД в Delphi 24 03.11.2009 15:39