๐ ํ์ ๋งคํฌ๋ก๋ก ์ผํ๊ธฐ (1)
๋ช๋ช ํน๋ณํ ๋ณด์ง์ด ์๋๋ผ๋ฉด ๊ตฐ๋์์ ์ผํ๋ฉด์ ์ฝ๋ฉ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒฝํ์ ํ์ ์ ๋งคํฌ๋ก ์คํฌ๋ฆฝํธ์ผ๊ฒ์ด๋ค. ์์ VBA์์ ๋ช๋ช ๊ธฐ๋ฅ์ด ๋น ์ง, ์ข ๋ ๋ถํธํ ๋ฌผ๊ฑด์ธ๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํ๋ค๋ณด๋ ์ ์ฉํ๊ฒ๋๋ค. ํ์ ๋ณ์ผ๋ก ๊ทผ 1๋ ๊ฐ๊น์ด ๊ทผ๋ฌดํ๋ฉด์ ๋งคํฌ๋ก๋์ ๋ง์ด ๋ณด์๋ค. ์๋ง ์ ๊ณต์๋ ๋์ฒ๋ผ ์ทจ๋ฏธ๋กํ๋ , ์์ ๋งคํฌ๋ก๋ฅผ ๊ณต๋ถํด๋ณผ ์ผ์ ๊ฑฐ์ ์์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ ์ด์ ์์ ์์ VBA๋ฅผ ์ด๋ค๋ ๊ฒ ๋ถํฐ ์ฒ์ ์๊ฒ๋์๋ค. ์ ๊ณต์๋ผ๋ฉด VBA๊ฐ ์๋ ๊ฐ๋จํด์ ๊ตณ์ด ์ด ์๋ฆฌ์ฆ๊ฐ ์๋๋๋ผ๋ ์ด์ ๋ ์ฌ์ฉ๋ฒ์ ์ถฉ๋ถํ ์๊ฐํด๋ผ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ํ์ ๋งคํฌ๋ก๋ก ์ผํ๊ธฐ ์๋ฆฌ์ฆ๋ ๋น์ ๊ณต์๋ฅผ ๋์์ผ๋ก ๊ตฐ๋์์ ๋ง์ด ์ฐ์ผ๋ฒํ ์ฌ๋ฌ๊ฐ์ง ํ๋ก๊ทธ๋จ(?)๋ค์ ๋ง๋ค์ด๋ณด๋ฉด์ ๋ด๊ฐ ์ค์ค๋ก ๋ฐฐ์ด ํ์ ๊ณผ ํ์ ๋งคํฌ๋ก๋ก ์กฐ๊ธ ๋ ํธํ๊ฒ ์ผํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ณด๋ ค ํ๋ค.
VBA๋ ๋ถ๋ช ํ ์ฌ์ด์ธ์ด์ด๊ณ , ์์ (ํ์ ) ๋งคํฌ๋ก๋ ๊ทธ์ค์์๋ ์ธ์ด ์์ฒด๊ฐ ์ด๋ ค์ธ ๋ถ๋ถ์ด ์๋ค์ํผํ๊ธฐ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ฐฐ์ธ ์ ์์์ง๋ง, ์์ฃผ ๊ธฐ์ด์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์ดํด๋ ํ์ํ ๊ฒ ๊ฐ๋ค. ํนํ ๊ฐ์ฒด์งํฅํ์ธ๋งํผ Python์ ์กฐ๊ธ์ด๋ผ๋ ๋ฐฐ์๋ ์ํ์์ ๋ฐฐ์ ๊ธฐ๋๋ฌธ์ ๋นจ๋ฆฌ ๋ฐฐ์ธ ์ ์์๋ ๊ฒ ๊ฐ๋ค. ์ต๋ํ ์์ธํ๊ฒ ์ค๋ช ํด๋ณด๊ฒ ์ง๋ง, ์ด ์๋ฆฌ์ฆ๋ ํ๋ก๊ทธ๋๋ฐ ์๋ฆฌ์ฆ๊ฐ ์๋๋ผ ์ค์ ํ์ (์์ ์ด๋ ๋ค๋ฅธ์ ์ ์์ง๋ง)์ด๊ธฐ๋๋ฌธ์ ํ์ ์ด์์ ์ค๋ช ์ ํ์ง ์์ ๊ฒ์ด๋ค.
์์ํ๊ธฐ ์ ์
๋จผ์ ๋งคํฌ๋ก๋ ์คํฌ๋ฆฝํธ ํธ์ง๊ธฐ๋ผ๋ ์ฐฝ์์ ๋ง๋ค๊ฒ๋๋๋ฐ, SW์๋ฃ์ค์ ์ฐพ์๋ณด๋ฉด **Notepad++**๊ฐ ์๋ค. Atom, VSCode๋ฅผ ๊ธฐ๋ํ ์ ์๋ค. (VBA์์ฒด๊ฐ ์๋ ๋จ์ํด์ ๊ทธ๋ฅ ํ์์ฑ์ ๋ชป๋๋ผ๊ฒ ๋๊ธฐ๋ ํ๋ค.) Notepad++์์ ๋ง๋ค๊ณ ๋ถ์ฌ๋ฃ๋ ์์ด ํจ์ฌ ํธํ๋ค. ํ์ ๋งคํฌ๋ก๊ฐ ์๋ ์๋ฌ๊ฐ ์ฆ๊ณ ์์ฃผ ํ ๊ธฐ๊ธฐ๋ํด์ ํ์ฐธ ๋ง๋ค๋ค๊ฐ ์ ๋ถ ๋ ๋ ค๋จน๋ ์ผ์ด ๋ง์๋ค. ํ ๊ธฐ๋๊ฑธ ๋ณด๊ณ ๋๋ฒ๊น ์ ํด์ผํ ๋๋ ๋ง๋ค.
๋งคํฌ๋ก๋ ์ผ๋ฐ์ ์ธ ์์์ด๋ ์ด๋ค์ ์ด ๋ค๋ฅผ๊น? ๋ฐ์ดํฐ ์์ธ, ์กฐํ๋ฑ์ ์์๋ง์ผ๋ก๋ ์ถฉ๋ถํ๋ค. ํ์ง๋ง 1) ๋ฐ์ดํฐ ์์ด ์์ฒญ ๋ง๋ค๋ฉด 2) ๋ฐ์ดํฐ์ ์ ๋ ฅ, ์์ ์ ํด์ผํ ๊ฒฝ์ฐ์ ๋งคํฌ๋ก๊ฐ ํ์ํ๋ค. ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ ์ฐพ์์ฃผ๋ ๊ฒ์ ์์์ผ๋ก ์ถฉ๋ถํ์ง๋ง, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ ์์ ํ๋ ๊ฒ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ๋ค. ๋งคํฌ๋ก ๋ นํ๊ธฐ๋ฅ๋ ๋จ์์์ ์ ๋ฐ๋ณตํ ์ ์๊ฒ ์ง๋ง, ๊ฑฐ์ ๋ชจ๋ ๊ฒฝ์ฐ์๋ ์๋ฏธ๊ฐ ์๋ค.
๋งคํฌ๋ก๊ฐ ์ ์ฉํ๊ฒ ์ฐ์ธ ์ผ๋ก๋ก ๋ง์ผ๋ฆฌ์ง(๋๋ ์๋ฒ์ )์ด ์๋ค. ์ฐ๋ฆฌ ์ค๋์์๋ ๋ง์ผ๋ฆฌ์ง ์ ๋๊ฐ ์์๋๋ฐ, ๋ง์ผ๋ฆฌ์ง ์ ๋ฆฝ ๋ด์ญ์ ๊ธฐ๋กํ๋ฉด์ ์ฌ์ฉํ ๋๋ง๋ค ์ฐจ๊ฐ์ ํด์ผํ๋ค. ์ฐ์์ ์ธ ๊ธฐ๋ก์ ํ๊ณ ์กฐํํ๋ ๊ฒ์ ๊ธฐ๋ณธ ์์ ์ ๊ธฐ๋ฅ์ผ๋ก๋ ์ถฉ๋ถํ์ง๋ง, ์ฐจ๊ฐ์ ์กฐ๊ธ ๊น๋ค๋กญ๋ค. ์ ๋ฆฝ/์ฌ์ฉํ๋ ค๋ ์ฌ๋์ด ๋ชฐ๋ ค๋ค๋ฉด ์ง์ ๋ก๊ทธ๋ฅผ ์์ฑํ๋ ๊ฒ ๋ง๋ฅ ๊ธฐ๋กํ๋ ๊ฒ์ ํจ์ฌ ๋ถํธํ ๊ฒ์ด๋ค. ๋ง์ผ๋ฆฌ์ง ๊ธฐ๋ก ๊ด๋ฆฌ๋ฅผ ๋งก๊ฒ ๋ ํ, ์ ์์ ๊ฐ๋ฐ๊ธฐ๊ฐ ๋์(๋ช์ผ์ ๊ฑธ๋ฆฐ ๋ฏ ํ๋ค) ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํด ํ ์ํธ์์ ๋ก๊ทธ ํ์ธ/์ ๋ฆฝ/์ฌ์ฉ์ ๋ชจ๋ ํ ์ ์์๋ค.
์ ํด์ง ํ์์ ๋ฌธ์์ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฐ์ ๋ฃ๊ณ ์ธ์ํด์ผํ๋ ์์ ์ด ์์๋๋ฐ, ๋ฐ์ดํฐ ๊ฐ์ด ๋งค์ฐ ๋ง๋ค๋ฉด ๋งคํฌ๋ก๊ฐ ์ ์ฉํ ์ ์๋ค. ๋ณดํต ํ ํ์์ ์ธ์๋ฌผ์ ๋ง๋ค๋๋ฉด ์๋ฌด๋ฆฌ ๋ค๋ฅธ ๊ฐ์ด ๋ง์๋ ํ๊ธ๋ก ๋ง๋ค๊ณค ํ๋๋ฐ, ํ๊ธ์ ๋จ์ถํค๋ฑ์ ์ต์ํ๋คํด๋ ์ฌ์ฉ์๊ฐ ํธ์งํ๋๋ฐ์ ์คํ๋ ๋์ํธ ํ๋ก๊ทธ๋จ๋ณด๋ค๋ ๋๋ฆด ์ ๋ฐ์ ์๋ค. ๊ณ ์ ๋ ํ์์ ๊ฐ๋ง ๋ฐ๊ฟ๋ฃ์ด ์ธ์ํ๋ ๊ฒ์ด๋ผ๋ฉด, ๋งคํฌ๋ก๋ฅผ ๋ง๋ค์ด ์ธ์ํ๋ ๊ฒ์ด ์๊ฐ์ ์ ๋ง ๋ง์ด ์ค์ฌ์ค ์ ์๋ค.
๋งคํฌ๋ก๋ ํ์ ์์ ์๋ ๊ทธ๋ฅ ์ ์ฉํ์ง ์์๋ค. ํ์์ ์ค๋ฅ๋ ์ฆ์๊ณ , ์๊ฐ๋๋ก ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ๋ํ ํ์ ์์ฒด๊ฐ ์์ ์ฑ์ด ๋น๊ต์ ๋จ์ด์ง๊ณ , PC์ฑ๋ฅ์๋ ํ๊ณ๊ฐ ์์ด ์ผ์ ํฌ๊ธฐ ์ด์์ ๋ฌธ์์์๋ ์ฌ์ฉํ๊ธฐ ํ๋ค์๋ค.
๋๋ ์ ๊ณต์๊ฐ ์๋๋ผ, ์ด ์๋ฆฌ์ฆ์์ ์ค๋ช ํ ๋ฐฉ๋ฒ๋ค์ ์๊ณ ๋ฆฌ์ฆ์๋ํ ์ดํด์์ ๋์ถ๋ ๋ฐฉ๋ฒ๋ณด๋ค๋ ์ค์ ์์ ์จ๋จน๊ธฐ์ํด ์๊ฐํด๋ธ ๋ฐฉ๋ฒ๋ค์ด ๋๋ถ๋ถ์ด๋ค. ๊ทธ๋ฅ ์ธ์ผ์ ์์์ง๋ง ์ ๋ ฌ์ ๋๋ ๋์์ด ๋๋ ๊ฒ ๊ฐ๋ค. Naming Convention์ ๊ฑฐ์ ์งํค์ง ์์๊ณ , ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ camelCase๋ฅผ ์ฌ์ฉํ๋ค. ์ถ๊ฐ๋ก ์ฑ ์์ ๋งคํฌ๋ก VBA ๋ฐ์ด๋ธ์ ๋์์ ๋ง์ด ๋ฐ์๋ค.