Страницы: 1
RSS
Авторизация (Регистрация) пользователей в EXCEL
 
Всем доброго дня!  
Просмотрел несколько тем об авторизации, но в основном они касаются защиты или ограничения доступа.    
А мне необходимо организовать простую систему регистрации пользователей (по имени профиля), так что-бы пользователю, который в первый раз открывает файл, выскочила форма, в которую предлагается ввести Настоящее имя и инициалы и при нажатии кнопки "Сохранить" данные об имени профиля и Настоящем имени сотрудника вносилась отдельный лист (базу сотрудников). При последующих открытиях файла с этого с того же профиля, производилась проверка и переменной, которая отвечает за имя сотрудника (Например name_uzer) присваивалось "настоящее имя" (Например Сидоров В. в место имени профиля или компьтера Sidorov_uchotnaia_gruppa_12354GTRJ ), а формочка с просьбой внести данные, больше не выскакивала (не зачем лишний раз беспокоить пользователя).  
Ранее я решал проблему таким образом:  
 
Private Sub Workbook_Open()  
'-----------------------------------------------  
Dim u_name As String  
' Присваиваем переменной u_name имя профиля сотрудника  
u_name = CreateObject("WScript.Network").UserName  
 
Производим проверку, если значение u_name было внесено, присваиваем Человеко - понятное имя сотрудника, переменной nam либо используем имя профиля, если имени в списках нет  
Select Case u_name  
 
 Case "i.krasnova"  
     nam = "Краснова И. Е."  
 
 Case "v.horbunova"  
     nam = "Горбунова В. С."  
 Case "r.oliinyk"  
     nam = "Олийнык Р. И."  
 Case Else  
     nam = Application.UserName  
End Select  
 
'----------------------------------------------  
 
End Sub  
 
Однако, при добавлении сотрудника, приходиться снова лезть в макросы, а после того как к нам присоединились еще несколько десятков предприятий, такой способ стал бесполезен.  
Если кто нибудь сталкивался с таким вопросом, прошу у Вас помощи.  
Заранее благодарен!
 
{quote}{login=The_Prist}{date=13.04.2011 05:41}{thema=}{post}Самое очевидное: создать список соответствий непосредственно на листе. И уже не через Select Case искать, а через Find или через массивы(что побыстрее будет). Но влазить все равно придется в книгу, при пополнении сотрудников. Но опять же: даже добавлять на этот скрытый лист соответствий можно будет макросом и из другой книги.  
Или разместить книгу с соответствиями на сервере, дать общий доступ и макросом вытаскивать оттуда данные в режиме Read Only. Если есть возможность на сервере хранить - то можно вообще в простом txt-файле. Если хотите, чтобы в него никто не влез, можно сделать защиту от дурака - тупо сменить расширение файла. А макросом его перед открытием менять на нормальное.{/post}{/quote}  
 
Спасибо за быстрый ответ!  
Вариант более чем подходит:  
Выполняется проверка соответствия, при нахождении совпадения присваивается нужное значение, в случае если соответствие не найдено, вылетает форма добавления с помощью макроса в лист или txt файл  
Только вот я не совсем понимаю, как правильно применить, в VBA достаточно слаб.  
Примерно так?  
 
Dim u_name As String  
Dim nam As String    
Dim iRange As Range  
Dim iFind As String  
iFind = u_name  'Что ищем  
 
    Set iRange = Columns("diapozon_s_imenami").Find(What:=iFind)  
    If iRange Is Nothing Then  
        MsgBox "Сотрудник не найден!" 'Или выводим форму добавления Нового сотрудника  
    Else  
        nam = iRange.Row  
    End If
 
Спасибо, буду пробоавать.
 
The_Prist, спасибо за дельный совет, все получилось как нужно.
Страницы: 1
Читают тему
Наверх