이 글은 이 전 글의 내용들을 토대로 재구성되었습니다
https://blog.naver.com/progress0407/222068926986
https://blog.naver.com/progress0407/222074132611
완성본
만들게 된 계기
당시 SI 철수 이후 부장님, 차장님, 사원님 등 본인을 포함한 5~6명이 작성해야할 엑셀 시트가 있었다
이전 동일 작업하셨던 차장님 말씀으로는 이틀 정도는 부지런히 작업해야 끝낼 수 있다고 하셨다
그 업무가 주어질 당시, 다른 팀원들은 다른 태스크가 있었고
신입이었던 내가 가장 먼저 하게 되었다
(중견 이상 기업의 신입은 입사 초기에 일이 없는 경우가 많았다)
내용은 간단했던 걸로 기억한다
각 테이블과 관련된 쿼리의 갯수를 고려해서 기입하면 되는 것이다 (Insert, Select, Update, Delete)
(자세한 내용은 기억이 나지 않는다)
작업을 하는 도중 한 가지 생각이 들었다... "그냥 자동화를 하면 안 되는걸까?"
일정도 넉넉해 보여서 시도하기로 했다
문제는 기존의 양식의 빈칸만 채우는 것이 아니라, 조건에 따라 세로행이 동적으로 삽입되어야 했다
엑셀에서 Basic하게 제공되는 함수, 피벗의 기능으로는 자동화가 불가능해 보였다
그래서 Visual Basic을 핸드폰으로 간단히 검색을 하면서 익혔다
함수 관계도
일부 코드
Public Function hasC(src As Variant, Optional c As Variant) As Boolean
Dim str As String
If TypeName(src) = "Integer" Or TypeName(src) = "Double" Then
str = Cells(src, c).Value
ElseIf TypeName(src) = "String" Then
str = src
ElseIf TypeName(src) = "Range" Then
str = src.Value
Else
has = "Missing Argument"
hasC = has
Exit Function
End If
hasC = InStr(str, "C") + InStr(str, "c") > 0
End Function
hasR, hasC, hasD는 모두 구조적으로 같다.
' C, R, U, D 중 어느 하나라도 가지고 있으면 true를 반환한다.
Public Function hasCRUD(src As Variant, Optional c As Variant) As Boolean
Dim str As String
If TypeName(src) = "Integer" Or TypeName(src) = "Double" Or TypeName(src) = "Long" Then
str = Cells(src, c).Value
ElseIf TypeName(src) = "String" Then
str = src
ElseIf TypeName(src) = "Range" Then
str = src.Value
Else
hasCRUD = "Missing Argument"
Exit Function
End If
hasCRUD = hasC(str) Or hasR(str) Or hasU(str) Or hasD(str)
End Function
작업 효과
약 5분 정도의 연산을 거치면 완성된 엑셀파일을 얻을 수 있었다
그때 사람들이 이 프로그램에 환호하던 것이 잊혀지지 않는다.. ㅎㅎ
살면서 가장 뿌듯했던 하루로 기억이 새겨져있다
코딩을 배우길 너무 잘했다는 생각이 드는... 그런 하루였지 :)
좀 더 자세한 작업 내용은 아래에 있다 .. ㅋ
후.. 이때가 3년도 훨씬 전이었다는게 놀랍다...
P.S 사람들이 남는 시간에 생산적인 걸 하는 게 아니라, 사무실에서 신나게 놀았다는 건 안 자랑...
'Back-end > 기타 (BE)' 카테고리의 다른 글
[동시성] 오프라인 선점 락 (Redis) (0) | 2023.12.12 |
---|---|
@Transactional 어노테이션 넌 뭐야? (0) | 2023.08.31 |
스프링 배치 getting start (0) | 2021.03.25 |
뉴렉쳐 Servlet & JSP [61 ~ 70강] (0) | 2020.11.01 |
뉴렉쳐 Servlet & JSP [51 ~ 60강] (0) | 2020.10.07 |
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!