엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 3부 |
환경 : Microsoft Excel 2010 |
이번예제는 엑셀이 시작될 때 로그인 창이 뜨게 해서 정확한 값을 입력하지 않으면 엑셀을 실행하지 못하도록 할 것입니다. 그래야 로그인 창이라고 할수 있겠죠.
▼ 엑셀을 실행하게 되면 동영상에서 보는 바와같이 창이 뜨게 되고 정확한 값을 입력하지 않으면 틀리다고 메시지를 띄우게 됩니다. 그리고 종료를 누르게 되면 엑셀이 종료 됩니다.
▼ 이것을 구현하기 위해 몇가지 수정을 하였습니다. 종료 버튼을 클릭하게 되면 엑셀 전체가 종료하게 되는데 Application.Quit 를 사용했습니다.
▼ 폼을 엑셀이 로딩할 때 띄우기 위해 [현재_통합_문서] 에서 작업을 하였습니다. Workbook_Open() 이벤트가 발생할 때 frmLogin.Show 로 폼을 띄우게 되는 것이죠. 그리고 사용자 정보시트에 로그인 정보가 있는데 보이면 안되므로 처음에는 숨깁니다.
Private Sub Workbook_Open() Worksheets("사용자정보").Visible = False frmLogin.Show End Sub |
▼ 다음은 로그인 폼에서 X 버튼을 클릭하게 되면 로그인 없이 들어갈수 있기 때문에 그 부분을 제어해야 합니다. UserForm 의 QueryClose() 이벤트 함수에서 가로채는게 가능합니다. 인수로 넘어오는 CloseMode 상수값이 vbFormControlMenu 이면 X 버튼이라는 거죠. 이분이 작동하지 않도록 아래와 같이 소스를 추가 하였습니다.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then MsgBox "x 버튼은 동작하지 않습니다." Cancel = True End If End Sub |
▼ 프로그램을 실행해서 폼의 X 버튼을 클릭하게 되면 아래와 같이 메시지를 띄워주게 됩니다.
▼ 마지막으로 로그인 버튼을 클릭했을때의 전체 소스 입니다. 로그인이 제대로 되었으면
Worksheets("사용자정보").Visible = True 사용해서 사용자 정보 시트를 다시 보이게 했습니다.
Private Sub btnConfirm_Click() Dim loginData As Range Dim pwd As String Dim name As String
Set loginData = Sheets("사용자정보").Range("A3:C6") On Error Resume Next pwd = Application.VLookup(Me.txtId, loginData, 2, 0) name = Application.VLookup(Me.txtId, loginData, 3, 0)
'' VLookup 에서 찾지 못했을때 이부분을 타게됨 If Err.Number <> 0 Then MsgBox "해당 ID 가 존재하지 않습니다.\n 다시 확인해주세요", vbCritical, "ID 오류" Exit Sub End If
'' 패스워드 확인 If pwd = Trim(Me.txtPwd) Then MsgBox "로그인 성공하였습니다.", vbInformation, "로그인확인" Worksheets("사용자정보").Visible = True Unload Me Else MsgBox "암호가 일치하지 않습니다.", vbCritical, "패스워드 오류" End If
End Sub |
▼ 이것으로 사용자정의 폼을 이용해서 엑셀도 정해진 사용자 이외에 사용하지 못하도록 보안기능을 넣었는데 이것이 완벽하지는 않습니다. 몇가지 구멍이 있긴한데 사용자들 몫으로 두겠습니다. ㅋ
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기 (0) | 2014.12.12 |
---|---|
엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기 (1) | 2014.12.12 |
엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기 (0) | 2014.12.08 |
엑셀(Excel) VBA - 사용자정의 폼의 타이틀바에서 X 버튼 제어하기 (1) | 2014.12.07 |
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2부 (1) | 2014.12.06 |
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 1부 (0) | 2014.12.06 |
엑셀(Excel) VBA - PrintPreview, PrintOut 함수로 인쇄미리보기, 인쇄하기 실행 (0) | 2014.12.03 |
엑셀(Excel) VBA - Union, Intersect 함수를 이용해서 영역의 합집합,교집합 구하기 (0) | 2014.12.02 |