Страница: 1 |
Страница: 1 |
Вопрос: ограничение прав доступа к данным на листе excel
Добавлено: 30.05.07 09:24
Автор вопроса: BarS
Добрый день!
Подскажите как можно реализовать разграничение доступа к данным на листе:
допустим такая таблица: Регион, Город, Население
нужно чтоб определенный пользователь имел доступ к данным только по его региону
По какому пути пойти?
все в Excel
Заранее благодарен!
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Pavel
Вопросов: 0
Ответов: 82
Профиль | | #1
Добавлено: 30.05.07 10:42
Можно попробывать так. Этот код надо поместить в Модуль ЭтаКнига(ThisWorkbook)
'при закрытии книги скрываем все листы, кроме "Общий лист"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim iSheet As Worksheet
For Each iSheet In Worksheets
If iSheet.Name <> "Общий лист" Then
iSheet.Visible = xlSheetVeryHidden
End If
Next
End Sub
'при открытии книги отображаем листы в зависимости от имени пользователя
Private Sub Workbook_Open()
Dim iUser As String
Dim iSheet As Worksheet
iUser = Application.UserName 'узнаём имя пользователя
Select Case iUser
Case "бухгалтер"
'открываем только лист Город
Me.Sheets("Город".Visible = xlSheetVisible
Case "менеджер"
'открываем только лист Город
Me.Sheets("Регион".Visible = xlSheetVisible
Case "директор"
'открываем все листы для директора
For Each iSheet In Worksheets
iSheet.Visible = xlSheetVisible
Next
'Case Else
'............
End Select
End Sub
Номер ответа: 2
Автор ответа:
Pavel
Вопросов: 0
Ответов: 82
Профиль | | #2
Добавлено: 30.05.07 10:47
А если данные на одном листе, то скрыть все нужные столбцы, потом поставить защиту на лист (Сервис - Защита - Защитить лист). А при открытии книги в процедуре Workbook_Open() определять имя пользователя iUser = Application.UserName и в соответствии с именем пользователя программно (через VBA) отображать скрытые столбцы, нужные для этого пользователя, а ненужные оставлять закрытыми
Номер ответа: 3
Автор ответа:
Pavel
Вопросов: 0
Ответов: 82
Профиль | | #3
Добавлено: 30.05.07 10:53
Но чтобы макрос мог отображать скрытые столбцы (или вообще что-то делать на защищённом паролем листе) в процедуре Workbook_Open(), которая выполняется при каждом открытии книги, также следует написать
т.е. защитить лист только от пользователя, а макрос может менять что хочет.
Об этом можно прочитать тут
http://www.progz.ru/forum/index.php?s=e9fd8ae73329e81910feb83c84f89b8b&showtopic=31725
Номер ответа: 4
Автор ответа:
Pavel
Вопросов: 0
Ответов: 82
Профиль | | #4
Добавлено: 30.05.07 10:54
Когда на этом форуме появиться возможность редактировать свои сообщения ?
ДАЙТЕ МНЕ EMAIL АДМИНА )
Номер ответа: 5
Автор ответа:
Meh&vb
ICQ: 195578509
Вопросов: 8
Ответов: 25
Профиль | | #5
Добавлено: 30.05.07 15:57
Нежно скрыть лист , а доступ к данным осуществлять из разработанной формы для ввода или редактирования данных
Номер ответа: 6
Автор ответа:
Meh&vb
ICQ: 195578509
Вопросов: 8
Ответов: 25
Профиль | | #6
Добавлено: 30.05.07 15:58
простите - не "нежно", а "нужно"
Номер ответа: 7
Автор ответа:
Rodion
Вопросов: 1
Ответов: 25
Профиль | | #7
Добавлено: 20.05.08 13:35
2Pavel
Никак не получается Ваше решение (Ответ 1) заставить работать. Не могли бы Вы проконсультировать подробнее?
У меня аналогичная задача - в режиме общего доступа к книге разграничить доступ по листов по юзерам.
email: rodion.bozhanov@eldorado.ru
С уважением, Родион
тел. 8-909-160-61-06
Номер ответа: 8
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #8
Добавлено: 20.05.08 14:01
Псевдоним: Pavel
Дата регистрации: 05.05.2007 2:52:03
Последнее посещение: 19.12.2007 18:21:09
Не думаю что он скоро сюда заглянет.
Советы других принимаются?