vba를 사용하다 보면 간단한 매크로 같은경우는 크게 문제 없지만 소스 코드가 많아질경우 관리 하기가 쉽지가 않습니다.
버전 관리를 한다고 해도 vba의 경우는 xlsm 파일을 통으로 수정할때마다 파일을 백업해두는 방식으로 밖에는 다른 방법이 없습니다.
어디를 어떻게 추가/삭제/수정 했는지 찾아보기도 힘들고 코드가 길어질수록 찾아보는것 자체도 힘들어 집니다.
그래서 저 같은 경우는 크게 변경이 되었을때만 백업을 해두는 방식으로 관리를 해왔는데 코드가 길어지니 내가 뭘 했었는지 찾아보기도 정말 힘들어 지더군요.
이번에 우연히 구글링을 하다가 vba도 git을 활용해 버전 관리를 할수 있는 방법을 알게 되어서 이렇게 포스팅을 하게 되었습니다.
다른 프로그래밍 언어를 사용해 보셨거나 코드를 길게 짜보신 분들은 버전 관리가 얼마나 중요한지 이해하실겁니다.
저는 git은 써보지는 않았지만 예전에 java를 혼자 공부했을때 svn을 사용해 버전관리를 했던 경험이 있어 나름 이해하기는 어렵지 않았습니다.
서론이 좀 길었는데 그럼 vbac를 이용한 git의 버전관리 시작해 보도록 하겠습니다.
1. vbac란?
vba에는 「파일 가져오기」「파일 내보내기」라는 기능이 있습니다.
하지만 이 기능은 각 모듈 혹은 폼 등을 각각 선택해서 가져오거나 내보내기를 해야 해서 굉장히 불편한 기능이기도 합니다.
여기서 한번에 가져오거나 내보내기를 하게 해주는 것이 vbac라는 툴 입니다.
vbac는 vba 프로그램을 명령 프롬프트를 통해서 텍스트 형태로 가져오기/내보내기를 해주는 프로그램 입니다.
엑셀 이외에도 word, access의 vba도 동일하게 사용 가능합니다.
vbac는 아래의 링크로 다운로드 받을 수 있습니다.
https://github.com/vbaidiot/Ariawase
링크의 git에 접속하셔서 우측 상단의 초록색 code 버튼을 눌러 Download ZIP를 선택하시면 파일을 다운로드 받으실 수 있습니다.
2. vbac의 사용법
다운 받은 파일 중에서 사용하는 파일은 vbac.wsf 파일 하나만 사용합니다.
우선 작업할 폴더를 하나 생성해 주시고 여기에 vbac.wsf 파일을 넣어주세요. 그리고 bin 폴더를 하나 생성해 주세요.
그리고 bin 폴더안에 xlsm 파일을 넣어주시면 준비는 끝입니다.
xlsm 파일은 간단하게 버튼을 누르면 메세지 박스가 나오는 매크로를 만들어 두었습니다.
폴더 구성은
- git 폴더
- vbac.wsf 파일
- bin 폴더
- git_test.xlsm 파일
이렇게 구성되어 있습니다.
이제 명령 프롬프트를 실행해서 아래의 명령어를 입력해 주시면 내보내기가 실행됩니다.
cscript vbac.wsf decombine
※윈도우 11에서는 터미널에서도 명령 프롬프트를 사용할 수 있습니다.
실행이 완료되면 대상 폴더에 src 폴더가 생성 되며, src 폴더내에 모듈이 내보내기 되어져 있는것을 확인할 수 있습니다.
메모장으로 열어보면 편집 가능한 텍스트 파일로 변환 되어있음을 확인할 수 있습니다.
반대로 들여오기의 경우에는 combine를 사용하면 됩니다.
cscript vbac.wsf combine
혼자서 사용할때는 아마도 거의 쓸일이 없는 기능이겠지만 버전을 되돌릴때 사용할수 있습니다.
3. git으로 버전 관리 하기
git으로 버전 관리를 하기 위해서 Sourcetree라는 프로그램을 사용합니다.
https://www.sourcetreeapp.com/
Sourcetree 설치후 원격 저장소에서 계정 추가를 해주세요.
설치시 계정 추가라던지 Bitbucket 은 건너뛰기 하시면 되고, SSH키 설정등도 모두 스킵해 주세요.
호스팅 서비스를 GitHub를 선택한 후 OAuth 토큰 새로고침을 눌러서 git에 로그인 해줍니다.
vba에서 한글을 사용할시 글자가 깨지는 현상이 있으므로 언어를 utf-8에서 euc-kr로 변경해줄 필요가 있습니다.
도구>옵션으로 들어가서 일반탭에서 기본 텍스트 인코딩을 euc-kr로 변경해 주세요.
이제 Create를 눌러 repository를 생성해 주겠습니다.
생성해 두었던 git 폴더를 선택해주고 중간에는 repository 이름을 적당히 넣어주세요.
계정에 저장소 생성하기에 체크해주시고 계정/소유자를 선택후 아래 repository 설명을 적어주시고 생성 버튼을 클릭
※일종의 편법인데 정상적으로는 git에서 repository를 생성한뒤 Create로 로컬 저장소를 생성해주는게 정석입니다.
여기서는 비어있는 폴더가 아니라 가지고 있는 파일을 커밋할 예정이므로 아래와 같은 에러 메세지가 나옵니다.
여기서 취소를 누르면 취소가 되지만 git에는 상기의 내용으로 repository가 생성이 됩니다.
다시 Creat를 선택한후 계정에 저장소 생성하기를 체크 해제 한후 생성을 선택해주세요.
※생성 도중 실수가 해서 새로 생성하느라 git_vba에서 git_test로 변경했습니다.
아래와 같은 화면이 나오면 repository는 생성이 완료되었습니다.
이제 원격에 git의 repository 주소를 넣어주고 빨간 느낌표를 없애줘야 하는데 git에서 확인하는 방법도 있지만 sourcetree에서 바로 확인하는 방법도 있습니다.
상단 git_test탭 우측의 +를 눌러 새탭을 열어준다음 Remote를 선택하고 새로고침을 눌러주세요.
갱신된 저장소를 마우스 우클릭 한뒤 클론 URL을 클립보드로 복사를 선택하면 간단하게 URL을 얻을 수 있습니다.
New tab를 닫고 다시 git_test 탭에서 설정을 선택후 추가 버튼을 눌러 원격 저장소를 추가해줍니다.
원격 이름은 원하는 이름으로 입력 해주시고 URL / 경로에 Ctrl+V를 눌러 복사한 주소를 넣어주세요.
Remote Account는 GitHub를 선택해 주신후 확인 버튼 클릭!
이렇게 하면 원격에 느낌표가 사라집니다.
이제 스테이지에 올라가지 않은 파일 창에서 모두 스테이지에 올리기 버튼을 누른뒤 아래쪽의 코멘트란에 커밋 내용을 적어주고 바뀐 내용 즉시 푸시를 선택한뒤 커밋을 눌러주세요.
완료되면 History화면으로 바뀝니다.
git에서 확인해보면 정상적으로 커밋이 되어있는걸 확인할 수 있습니다.
4. 버전 관리
기본적으로 xlsm파일은 bin 폴더의 파일을 사용하시면 되며 소스 업데이트를 했을시 vbac를 사용한뒤 커밋을 시켜주면 이후 버전 관리를 할수 있습니다.
소스가 변경되었을 경우 vbac로 내보내기를 먼저 해주세요.
이후 Sourcetree를 확인하면 변경된 파일이 대기중으로 나옵니다.
xlsm파일은 변경 내용을 확인할 수 없지만 모듈의 경우 변경된 내용을 Sourcetree에서 확인할 수 있습니다.
마찬가지로 스테이지로 변경된 파일을 올린뒤 코멘트를 작성하고 커밋해 주시면 됩니다.
포스팅을 작성하다보니 상당히 긴 포스팅이 되어버렸네요.
저 역시 처음 써보는 기능들이라 익숙한듯 익숙치 않아 많에 헤메었네요. ㅠㅠ
버전 관리가 어려웠던 vba를 이제 버전 관리 해가며 사용하시기 바라며 포스팅을 마칩니다.
마지막으로 문제점이 한가지 있어 덧붙입니다.
소스코드 내의 한글의 경우 euc-kr로 변경시 제대로 표시가 되지만 파일명, 모듈명, 폼이름등은 한글을 쓸경우 깨져서 나옵니다.
utf-8로 변경하면 한글이 제대로 나오지만 소스코드의 한글이 깨집니다.
여러가지 방법을 구글링해서 적용해 보았으나 이부분은 해결이 되지 않더군요.
해서 파일명, 모듈명, 폼이름등은 영문을 사용하시는걸 권장합니다.
'엑셀 vba > 기타' 카테고리의 다른 글
ImageMSO(Image Microsoft Office) (0) | 2022.05.25 |
---|---|
커스텀 리본 관리 툴 RibbonX Editor (0) | 2022.05.17 |
Split, Replace, Trim 활용해서 카톡 대화내용 필요한 부분 추출하기 (0) | 2021.02.26 |
엑셀에서 카카오톡 메세지 보내기 (1) | 2020.08.21 |
VBA 맨위의 행으로 이동하는 명령어 (0) | 2020.03.05 |