shlewislee.me

πŸ“Ž ν•œμ…€ 맀크둜둜 μΌν•˜κΈ° (1)

λͺ‡λͺ‡ νŠΉλ³„ν•œ 보직이 μ•„λ‹ˆλΌλ©΄ κ΅°λŒ€μ—μ„œ μΌν•˜λ©΄μ„œ μ½”λ”©κ³Ό κ°€μž₯ κ°€κΉŒμš΄ κ²½ν—˜μ€ ν•œμ…€μ˜ 맀크둜 μŠ€ν¬λ¦½νŠΈμΌκ²ƒμ΄λ‹€. μ—‘μ…€ VBAμ—μ„œ λͺ‡λͺ‡ κΈ°λŠ₯이 λΉ μ§„, μ’€ 더 λΆˆνŽΈν•œ 물건인데, 기본적으둜 κ°€λŠ₯성은 λ¬΄κΆλ¬΄μ§„ν•˜λ‹€λ³΄λ‹ˆ μ• μš©ν•˜κ²Œλœλ‹€. ν–‰μ •λ³‘μœΌλ‘œ κ·Ό 1λ…„κ°€κΉŒμ΄ κ·Όλ¬΄ν•˜λ©΄μ„œ λ§€ν¬λ‘œλ•μ„ 많이 λ³΄μ•˜λ‹€. μ•„λ§ˆ μ „κ³΅μžλ“  λ‚˜μ²˜λŸΌ μ·¨λ―Έλ‘œν•˜λ“ , μ—‘μ…€ 맀크둜λ₯Ό 곡뢀해볼 일은 거의 μ—†μ—ˆμ„ 것이라고 μƒκ°ν•œλ‹€. μ• μ΄ˆμ— μ—‘μ…€μ—μ„œ VBAλ₯Ό μ“΄λ‹€λŠ” 것 λΆ€ν„° 처음 μ•Œκ²Œλ˜μ—ˆλ‹€. μ „κ³΅μžλΌλ©΄ VBAκ°€ μ›Œλ‚™ κ°„λ‹¨ν•΄μ„œ ꡳ이 이 μ‹œλ¦¬μ¦ˆκ°€ μ•„λ‹ˆλ”λΌλ„ 이정도 μ‚¬μš©λ²•μ€ μΆ©λΆ„νžˆ 생각해낼 수 μžˆμ„ 것이라고 μƒκ°ν•œλ‹€. ν•œμ…€ 맀크둜둜 μΌν•˜κΈ° μ‹œλ¦¬μ¦ˆλŠ” λΉ„μ „κ³΅μžλ₯Ό λŒ€μƒμœΌλ‘œ κ΅°λŒ€μ—μ„œ 많이 μ“°μΌλ²•ν•œ μ—¬λŸ¬κ°€μ§€ ν”„λ‘œκ·Έλž¨(?)듀을 λ§Œλ“€μ–΄λ³΄λ©΄μ„œ λ‚΄κ°€ 슀슀둜 배운 ν•œμ…€κ³Ό ν•œμ…€ 맀크둜둜 쑰금 더 νŽΈν•˜κ²Œ μΌν•˜λŠ” 방법을 μ†Œκ°œν•΄λ³΄λ € ν•œλ‹€.

VBAλŠ” λΆ„λͺ…νžˆ μ‰¬μš΄μ–Έμ–΄μ΄κ³ , μ—‘μ…€(ν•œμ…€) λ§€ν¬λ‘œλŠ” κ·Έμ€‘μ—μ„œλ„ μ–Έμ–΄ μžμ²΄κ°€ μ–΄λ €μšΈ 뢀뢄이 μ—†λ‹€μ‹œν”Όν•˜κΈ°λ•Œλ¬Έμ— λΉ λ₯΄κ²Œ 배울 수 μžˆμ—ˆμ§€λ§Œ, μ•„μ£Ό 기초적인 ν”„λ‘œκ·Έλž˜λ° 언어에 λŒ€ν•œ μ΄ν•΄λŠ” ν•„μš”ν•œ 것 κ°™λ‹€. 특히 객체지ν–₯ν˜•μΈλ§ŒνΌ Python을 μ‘°κΈˆμ΄λΌλ„ λ°°μ›Œλ‘” μƒνƒœμ—μ„œ λ°°μ› κΈ°λ•Œλ¬Έμ— 빨리 배울 수 μžˆμ—ˆλ˜ 것 κ°™λ‹€. μ΅œλŒ€ν•œ μžμ„Έν•˜κ²Œ μ„€λͺ…ν•΄λ³΄κ² μ§€λ§Œ, 이 μ‹œλ¦¬μ¦ˆλŠ” ν”„λ‘œκ·Έλž˜λ° μ‹œλ¦¬μ¦ˆκ°€ μ•„λ‹ˆλΌ μ‹€μ „ ν•œμ…€(μ—‘μ…€μ΄λž‘ λ‹€λ₯Έμ μ€ μ—†μ§€λ§Œ)μ΄κΈ°λ•Œλ¬Έμ— ν•„μš” μ΄μƒμ˜ μ„€λͺ…은 ν•˜μ§€ μ•Šμ„ 것이닀.

μ‹œμž‘ν•˜κΈ° 전에

ν•œμ…€ 슀크립트 νŽΈμ§‘κΈ°

λ¨Όμ € λ§€ν¬λ‘œλŠ” 슀크립트 νŽΈμ§‘κΈ°λΌλŠ” μ°½μ—μ„œ λ§Œλ“€κ²Œλ˜λŠ”λ°, SWμžλ£Œμ‹€μ„ 찾아보면 **Notepad++**κ°€ μžˆλ‹€. Atom, VSCodeλ₯Ό κΈ°λŒ€ν•  순 μ—†λ‹€. (VBAμžμ²΄κ°€ μ›Œλ‚™ λ‹¨μˆœν•΄μ„œ κ·Έλ‹₯ ν•„μš”μ„±μ„ λͺ»λŠλΌκ²Œ λ˜κΈ°λ„ ν•œλ‹€.) Notepad++μ—μ„œ λ§Œλ“€κ³  λΆ™μ—¬λ„£λŠ” 식이 훨씬 νŽΈν•˜λ‹€. ν•œμ…€ λ§€ν¬λ‘œκ°€ μ›Œλ‚™ μ—λŸ¬κ°€ 잦고 자주 νŒ…κΈ°κΈ°λ„ν•΄μ„œ ν•œμ°Έ λ§Œλ“€λ‹€κ°€ μ „λΆ€ λ‚ λ €λ¨ΉλŠ” 일이 λ§Žμ•˜λ‹€. νŒ…κΈ°λŠ”κ±Έ 보고 디버깅을 ν•΄μ•Όν• λ•Œλ„ λ§Žλ‹€.

λ§€ν¬λ‘œλŠ” 일반적인 μˆ˜μ‹μ΄λž‘ 어떀점이 λ‹€λ₯ΌκΉŒ? 데이터 색인, μ‘°νšŒλ“±μ€ μˆ˜μ‹λ§ŒμœΌλ‘œλ„ μΆ©λΆ„ν•˜λ‹€. ν•˜μ§€λ§Œ 1) 데이터 양이 μ—„μ²­ λ§Žλ‹€λ©΄ 2) λ°μ΄ν„°μ˜ μž…λ ₯, μˆ˜μ •μ„ ν•΄μ•Όν•  κ²½μš°μ—” λ§€ν¬λ‘œκ°€ ν•„μš”ν•˜λ‹€. 쑰건을 λ§Œμ‘±ν•˜λŠ” 값을 μ°Ύμ•„μ£ΌλŠ” 것은 μˆ˜μ‹μœΌλ‘œ μΆ©λΆ„ν•˜μ§€λ§Œ, 쑰건의 λ§Œμ‘±ν•˜λŠ” 값을 μˆ˜μ •ν•˜λŠ” 것은 κΈ°λ³Έ κΈ°λŠ₯μœΌλ‘œλŠ” λΆˆκ°€λŠ₯ν•˜λ‹€. 맀크둜 λ…Ήν™”κΈ°λŠ₯도 λ‹¨μˆœμž‘μ—…μ€ λ°˜λ³΅ν•  수 μžˆκ² μ§€λ§Œ, 거의 λͺ¨λ“  κ²½μš°μ—λŠ” μ˜λ―Έκ°€ μ—†λ‹€.

λ§€ν¬λ‘œκ°€ μœ μš©ν•˜κ²Œ 쓰인 μΌλ‘€λ‘œ λ§ˆμΌλ¦¬μ§€(λ˜λŠ” μƒλ²Œμ )이 μžˆλ‹€. 우리 μ€‘λŒ€μ—μ„œλŠ” λ§ˆμΌλ¦¬μ§€ μ œλ„κ°€ μžˆμ—ˆλŠ”λ°, λ§ˆμΌλ¦¬μ§€ 적립 내역을 κΈ°λ‘ν•˜λ©΄μ„œ μ‚¬μš©ν• λ•Œλ§ˆλ‹€ 차감을 ν•΄μ•Όν–ˆλ‹€. 연속적인 기둝을 ν•˜κ³  μ‘°νšŒν•˜λŠ” 것은 κΈ°λ³Έ μ—‘μ…€μ˜ κΈ°λŠ₯μœΌλ‘œλ„ μΆ©λΆ„ν•˜μ§€λ§Œ, 차감은 쑰금 κΉŒλ‹€λ‘­λ‹€. 적립/μ‚¬μš©ν•˜λ €λŠ” μ‚¬λžŒμ΄ λͺ°λ €λ“€λ©΄ 직접 둜그λ₯Ό μž‘μ„±ν•˜λŠ” 것 마λƒ₯ κΈ°λ‘ν•˜λŠ” 것은 훨씬 λΆˆνŽΈν•  것이닀. λ§ˆμΌλ¦¬μ§€ 기둝 관리λ₯Ό 맑게 된 ν›„, μ μž–μ€ κ°œλ°œκΈ°κ°„ 끝에(λͺ‡μΌμ€ κ±Έλ¦° λ“― ν•˜λ‹€) 맀크둜λ₯Ό μ‚¬μš©ν•΄ ν•œ μ‹œνŠΈμ—μ„œ 둜그 확인/적립/μ‚¬μš©μ„ λͺ¨λ‘ ν•  수 μžˆμ—ˆλ‹€.

μ •ν•΄μ§„ ν˜•μ‹μ˜ λ¬Έμ„œμ— 각기 λ‹€λ₯Έ 값을 λ„£κ³  μΈμ‡„ν•΄μ•Όν•˜λŠ” μž‘μ—…μ΄ μžˆμ—ˆλŠ”λ°, 데이터 값이 맀우 λ§Žλ‹€λ©΄ λ§€ν¬λ‘œκ°€ μœ μš©ν•  수 μžˆλ‹€. 보톡 ν‘œ ν˜•μ‹μ˜ 인쇄물을 λ§Œλ“€λ•Œλ©΄ 아무리 λ‹€λ₯Έ 값이 λ§Žμ•„λ„ ν•œκΈ€λ‘œ λ§Œλ“€κ³€ ν•˜λŠ”λ°, ν•œκΈ€μ€ 단좕킀등에 μ΅μˆ™ν•˜λ‹€ν•΄λ„ μ‚¬μš©μžκ°€ νŽΈμ§‘ν•˜λŠ”λ°μ— μŠ€ν”„λ ˆλ“œμ‹œνŠΈ ν”„λ‘œκ·Έλž¨λ³΄λ‹€λŠ” 느릴 수 밖에 μ—†λ‹€. κ³ μ •λœ ν˜•μ‹μ— κ°’λ§Œ λ°”κΏ”λ„£μ–΄ μΈμ‡„ν•˜λŠ” 것이라면, 맀크둜λ₯Ό λ§Œλ“€μ–΄ μΈμ‡„ν•˜λŠ” 것이 μ‹œκ°„μ„ 정말 많이 쀄여쀄 수 μžˆλ‹€.

λ§€ν¬λ‘œλŠ” ν˜•μ‹ μˆ˜μ •μ—λŠ” κ·Έλ‹₯ μœ μš©ν•˜μ§€ μ•Šμ•˜λ‹€. ν˜•μ‹μ€ 였λ₯˜λ„ μž¦μ•˜κ³ , μƒκ°λŒ€λ‘œ λ˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ λ§Žμ•˜λ‹€. λ˜ν•œ ν•œμ…€ μžμ²΄κ°€ μ•ˆμ •μ„±μ΄ 비ꡐ적 λ–¨μ–΄μ§€κ³ , PCμ„±λŠ₯에도 ν•œκ³„κ°€ μžˆμ–΄ 일정 크기 μ΄μƒμ˜ λ¬Έμ„œμ—μ„œλŠ” μ‚¬μš©ν•˜κΈ° νž˜λ“€μ—ˆλ‹€.

λ‚˜λŠ” μ „κ³΅μžκ°€ μ•„λ‹ˆλΌ, 이 μ‹œλ¦¬μ¦ˆμ—μ„œ μ„€λͺ…ν•  방법듀은 μ•Œκ³ λ¦¬μ¦˜μ—λŒ€ν•œ μ΄ν•΄μ—μ„œ λ„μΆœλœ λ°©λ²•λ³΄λ‹€λŠ” μ‹€μ „μ—μ„œ μ¨λ¨ΉκΈ°μœ„ν•΄ 생각해낸 방법듀이 λŒ€λΆ€λΆ„μ΄λ‹€. κ·Έλ‹₯ 쓸일은 μ—†μ—ˆμ§€λ§Œ μ •λ ¬μ •λ„λŠ” 도움이 됐던 것 κ°™λ‹€. Naming Convention은 거의 μ§€ν‚€μ§€ μ•Šμ•˜κ³ , λŒ€λΆ€λΆ„μ˜ κ²½μš°μ— camelCaseλ₯Ό μ‚¬μš©ν–ˆλ‹€. μΆ”κ°€λ‘œ μ±… μ—‘μ…€ 맀크둜 VBA λ°”μ΄λΈ”μ˜ 도움을 많이 λ°›μ•˜λ‹€.

This article is part of a series: ν•œμ…€ 맀크둜

Reply to this post by email β†ͺ