프로그램/완료

[엑셀양식] 계정 권한 변경 신청서

도 박사 2020. 7. 19. 17:27
반응형

보안업무는 기록, 로그 자료가 필수다.

 

시스템 로그는 담당자가 관리하고 자동적으로 쌓이니까 쉽게 수집할 수 있지만, 

 

인적 관리 보안과 연관되어 있다면 쉽지 않다. (어느정도 체계가 잡혀있는 기업 제외)

 

이제 막 보안 절차나 체계를 잡아가기 시작한다면 더욱 더 어렵다...

 

회사 보안 절차를 수립하고 사용자가 편하면서 보안업무에 도움이 될 양식들을 만들 예정이다. (본인한정)


계정 권한 변경 신청서

 

  • 목적

      ISMS 인증 심사 항목 중 계정 권한 변경에 대한 내역을 남기고 절차를 수립하게 되어있다. 그래서 만들었다.

      (시스템 변경 로그 외에 사용자가 신청한 기록도 남겨야함)

  

 

  • 절차
  1. 계정의 권한을 변경하고자 하는 신청인이 보다 쉽게 작성할 수 있도록 자동화 양식을 만듦
  2. 작성 후 전송하기 버튼을 누르면 담당자 이메일로 전송됨
  3. 담당자는 이메일을 받고 출력 후 검토하여 권한 부여
  4. 권한 부여 후 신청인에게 신청서 서명 요청
  5. 관리자에게 주기적으로 결재받기
  6. 여건상 선조치 후보고 스타일로 함

 

  • 양식 실행 영상

 

[영상1. 양식 실행 영상]
  • 주요 업무 사이트는 카페24, 셀메이트가 있음
  • 직원들이 카페24, 셀메이트 계정의 권한 변경이 필요하면 본 양식을 작성하여 담당자에게 제출하여야 됨

양식 구성 

  • 모듈
  1. 메인 함수 (역할: 입력값 검증, 캡쳐 함수 콜, 메일 보내는 함수 콜)
  2. 메일 보내기 모듈 (역할: 메일 보낼때 씀)
  3. 선택셀 이미지로 저장 (역할: 메일보낼 이미지 파일 생성)
  4. 체크박스 생성 (역할: 5번 모듈의 친구)
  5. worksheet_change (시트의 특정 셀 값이 바뀌면 체크박스 변경)

 

  • SMTP 설정

    - 메일보내기를 하려면 SMTP 서버 설정이 필요함

    - SMTP서버는 구글 계정 만들어서 사용함


  • 주요 함수

   1. 특정 셀 값이 변하면 매크로 실행

 

[그림1. 시트 선택]

본 매크로가 적용될 시트를 더블 클릭해서 코드 창을 연다.

 

[그림2. 기본 설정]

Worksheet와 Change를 선택하면 위와 같은 화면을 볼 수 있다.

 

여기에 A1의 값이 변하면 A2에 A1 내용이 변경됬다는 문구를 출력해보겠다. 

1
2
3
4
5
6
7
8
9
Private Sub Worksheet_Change(ByVal Target As Range)
 
    If Not Intersect(Range("A1"), Target) Is Nothing Then
    
        Cells(2"A"= "큰일이다 !!! A1 내용이 변경 됬다!!" & Second(Time) * 6
    
    End If
    
End Sub
cs

 

[영상2. 매크로 실행 영상]

매크로를 실행하면 A1의 값이 변경됬을 때만 A2에 문구가 출력된다. 

 

뒤에 숫자를 붙여 놓은건 매크로가 실행되는지 안되는지 확인하기 위함

 


   2. 체크박스 생성, 삭제 함수

1
2
3
4
5
6
Sub Checkbox_Create()
 
    ActiveSheet.CheckBoxes.Add(행, 열, 체크박스 가로, 체크박스 높이).Select
    Selection.Characters.Text = "첵흐박스"
   
End if
cs

아직도 헷갈리는 행, 열

 

행: 1,2,3,4,5..... 

열: A,B,C,D,E.....

 

이제 외울 수 있을 것 같다...

 

행과 열 구분도 할 줄 알고 많이 성장한 느낌이다.

 

그런데 체크박스 만들때는 섬세한 숫자입력이 필요하다.

 

아래와 같은 코드를 입력하면 그림1과 같은 결과가 나타난다.

1
2
3
Sub check_box()
    ActiveSheet.CheckBoxes.Add(1111).Select
End Sub
cs

[그림1. 코드 실행 결과]

대충 셀 A1에 잘들어간 것 같다.

 

다음 코드를 보자.

1
2
3
4
5
6
7
Sub check_box()
    
    For i = 1 To 100
        ActiveSheet.CheckBoxes.Add(1, i, 11).Select
    Next i
    
End Sub
cs

[그림2. 코드 실행 결과]

반복문을 이용해 열 쪽 값을 1~100까지 넣고 체크박스를 생성했다.

 

반대로 행 쪽에 값을 넣으면 방향만 다르고 결과는 똑같이 나온다.

 

시트위에 체크 박스 생성 할 땐 정확한 위치를 파악하는 것이 중요하다.

 

그래서 위치 조절 할 때 행 높이, 열 너비를 파악하니 수월하게 위치를 잡을 수 있었다. 

 

1
2
3
4
5
6
7
Sub check_box()
    
    For i = 1 To 100 Step 16.5
        ActiveSheet.CheckBoxes.Add(1, i, 11).Select
    Next i
    
End Sub
cs

[그림3. 코드 실행 결과]

이 코드와 위 코드와 다른 점은 반복문에 증가값을 16.5로 설정해주었다는 점이다.

 

16.5란 값이 나온 이유는 엑셀의 행 높이 기본값이 16.5 이기 때문

[그림4. 행 높이, 22px]
[그림5. 열 너비, 72px]

1픽셀 당 0.75의 값이 나오고 열 너비는 0.75 * 72 = 54 (단위는 모름)

 

코드에 반복문 증가값을 54로 변경하고 실행해봤다.

1
2
3
4
5
6
7
Sub check_box()
    
    For i = 1 To 1000 Step 54
        ActiveSheet.CheckBoxes.Add(i, 111).Select
    Next i
    
End Sub
cs

[그림6. 코드 실행 결과]

체크박스 위치 선정을 이렇게 쉽게 할 수 있게 되었다.

 

이제 체크박스의 텍스트 변경과 삭제를 해보자.

 

1
2
3
4
5
6
Sub check_box()
 
    ActiveSheet.CheckBoxes.Add(1111).Select
    Selection.Characters.Text = "변경된 텍스트"
 
End Sub
cs

[그림7. 코드 실행 결과]

분명 '변경된 텍스트' 문자열이 나와야 되는데, 변경이라는 글자만 나왔다.

 

원인은 체크박스의 너비가 1로 설정되어 있기때문이다.

 

너비를 길게 해주면 글자가 다 나타난다.

1
2
3
4
5
6
Sub check_box()
 
    ActiveSheet.CheckBoxes.Add(111001).Select
    Selection.Characters.Text = "변경된 텍스트"
 
End Sub
cs

[그림8. 코드 실행 결과]

너비를 넓게 해주니 문자열이 정상적으로 출력된다.

 

볼거 다 봤으니 없애버리자.

1
2
3
4
5
6
Sub check_box()
 
    Sheets("sheet1").CheckBoxes.Delete
    ActiveSheet.CheckBoxes.Delete
    
End Sub
cs

셀 또는 범위로 지정할 경우 오류가 발생하면서 코드가 진행되지 않는다.

 

결국은 시트에 있는 모든 체크박스를 지울 수 밖에 없는 것 같다.

 

 


 

   3. 선택된 범위를 이미지 파일로 저장

 

구글 검색을 통해 얻은 코드이다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Option Explicit
Sub 선택셀_이미지로저장(ByVal save_Path As String)
 
    Dim rng As Range
 
    Set rng = Range("A1:J40")
        rng.CopyPicture xlScreen, xlPicture
     With ActiveSheet.ChartObjects.Add(00, rng.Width, rng.Height)
       .ShapeRange.Line.Visible = msoFalse
       .Select
       .Chart.Paste
       .Chart.Export save_Path & ".png""PNG"
       .Delete
     End With
 
End Sub<
cs

파라미터는 파일 이름 포함한 경로를 문자열로 받는다. (파일 저장하기 위함)

ex. c:\user\사용자이름\Desktop\image

 

rng 변수에는 캡쳐를 찍을 범위를 설정한다.

 

그리고 실행만 하면 해당 경로에 엑셀 캡쳐파일이 저장된다. 

 

끄읕.

 

제일 중요한 메일 보내기 기능은 따로 기록 할 예정이다.

 

 

반응형