보안업무는 기록, 로그 자료가 필수다.
시스템 로그는 담당자가 관리하고 자동적으로 쌓이니까 쉽게 수집할 수 있지만,
인적 관리 보안과 연관되어 있다면 쉽지 않다. (어느정도 체계가 잡혀있는 기업 제외)
이제 막 보안 절차나 체계를 잡아가기 시작한다면 더욱 더 어렵다...
회사 보안 절차를 수립하고 사용자가 편하면서 보안업무에 도움이 될 양식들을 만들 예정이다. (본인한정)
계정 권한 변경 신청서
- 목적
ISMS 인증 심사 항목 중 계정 권한 변경에 대한 내역을 남기고 절차를 수립하게 되어있다. 그래서 만들었다.
(시스템 변경 로그 외에 사용자가 신청한 기록도 남겨야함)
- 절차
- 계정의 권한을 변경하고자 하는 신청인이 보다 쉽게 작성할 수 있도록 자동화 양식을 만듦
- 작성 후 전송하기 버튼을 누르면 담당자 이메일로 전송됨
- 담당자는 이메일을 받고 출력 후 검토하여 권한 부여
- 권한 부여 후 신청인에게 신청서 서명 요청
- 관리자에게 주기적으로 결재받기
- 여건상 선조치 후보고 스타일로 함
- 양식 실행 영상
- 주요 업무 사이트는 카페24, 셀메이트가 있음
- 직원들이 카페24, 셀메이트 계정의 권한 변경이 필요하면 본 양식을 작성하여 담당자에게 제출하여야 됨
양식 구성
- 모듈
- 메인 함수 (역할: 입력값 검증, 캡쳐 함수 콜, 메일 보내는 함수 콜)
- 메일 보내기 모듈 (역할: 메일 보낼때 씀)
- 선택셀 이미지로 저장 (역할: 메일보낼 이미지 파일 생성)
- 체크박스 생성 (역할: 5번 모듈의 친구)
- worksheet_change (시트의 특정 셀 값이 바뀌면 체크박스 변경)
- SMTP 설정
- 메일보내기를 하려면 SMTP 서버 설정이 필요함
- SMTP서버는 구글 계정 만들어서 사용함
- 주요 함수
1. 특정 셀 값이 변하면 매크로 실행
본 매크로가 적용될 시트를 더블 클릭해서 코드 창을 연다.
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 |
매크로를 실행하면 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(1, 1, 1, 1).Select End Sub | cs |
대충 셀 A1에 잘들어간 것 같다.
다음 코드를 보자.
1 2 3 4 5 6 7 | Sub check_box() For i = 1 To 100 ActiveSheet.CheckBoxes.Add(1, i, 1, 1).Select Next i End Sub | cs |
반복문을 이용해 열 쪽 값을 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, 1, 1).Select Next i End Sub | cs |
이 코드와 위 코드와 다른 점은 반복문에 증가값을 16.5로 설정해주었다는 점이다.
16.5란 값이 나온 이유는 엑셀의 행 높이 기본값이 16.5 이기 때문
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, 1, 1, 1).Select Next i End Sub | cs |
체크박스 위치 선정을 이렇게 쉽게 할 수 있게 되었다.
이제 체크박스의 텍스트 변경과 삭제를 해보자.
1 2 3 4 5 6 | Sub check_box() ActiveSheet.CheckBoxes.Add(1, 1, 1, 1).Select Selection.Characters.Text = "변경된 텍스트" End Sub | cs |
분명 '변경된 텍스트' 문자열이 나와야 되는데, 변경이라는 글자만 나왔다.
원인은 체크박스의 너비가 1로 설정되어 있기때문이다.
너비를 길게 해주면 글자가 다 나타난다.
1 2 3 4 5 6 | Sub check_box() ActiveSheet.CheckBoxes.Add(1, 1, 100, 1).Select Selection.Characters.Text = "변경된 텍스트" End Sub | cs |
너비를 넓게 해주니 문자열이 정상적으로 출력된다.
볼거 다 봤으니 없애버리자.
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(0, 0, 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 변수에는 캡쳐를 찍을 범위를 설정한다.
그리고 실행만 하면 해당 경로에 엑셀 캡쳐파일이 저장된다.
끄읕.
제일 중요한 메일 보내기 기능은 따로 기록 할 예정이다.
'프로그램 > 완료' 카테고리의 다른 글
[엑셀vba] 셀메이트 발송 확인 프로그램 (0) | 2021.02.03 |
---|---|
[엑셀vba] 재무제표 받아오기 (14) | 2021.01.12 |
[엑셀vba] 폼으로 달력만들기 (0) | 2020.11.19 |
[엑셀vba] EBS 방송국 편성표 가져와보기 (0) | 2020.05.30 |
[엑셀vba] 쿠팡에 있는 상품을 스크래핑 해보자(feat. 자동로그인) (62) | 2020.05.20 |