VBA란Visual Basic for Application의 약자로 마이크로소프트 에서 윈도우 응용 프로그램 안에서 사용하라고 개발된 프로그래밍 언어입니다. 웹 / 앱 개발자로서, 비주얼 베이직으로 만들어져 있는 프로그램을 유지보수 하는 것이 아니면 최근에는 잘 사용되지 않지만 여전히 회사에서 내용을 기록할 때 자주 쓰이는 것으로 알고 있습니다.
마이크로소프트 엑셀에서 vba 언어를 지원하듯이, 모든 사람들에게 무료로 오픈 되어 있는 리브레 오피스에도 똑같은 방식으로 프로그래밍이 가능합니다.
리브레 오피스에서 vba 스크립트를 사용하는 방법
1. 리브레 오피스 Calc 를 실행해 주세요. 이 프로그램에서는 엑셀이라는 이름을 쓰지 않고 Calc(칼크? 컬크?) 라는 이름으로 불리고 있습니다.
2. 우선 사용할 엑셀 파일을 .xlsx 로 다른 이름 저장해 주세요. 기본은 .ods 로 되어 있습니다.
3. 상단 메뉴에서 도구 -> 매크로 -> Edit Macros 를 클릭합니다.
*최신버전의 리브레 오피스에서는 vba 코드 지원이 기본으로 나와 있다고 공식 홈페이지에 서술 되어 있습니다. 하지만 연전히 WorkSheets 나 Range 같은 몇몇 코드는 작동을 안하기 때문에 가능하면 Option VBASupport 1 를 추가하시는 것을 추천드립니다.
4. 그러면 ms 오피스의 엑셀과 굉장히 닮은 창이 등장합니다. 테스트 삼아 여기서 기본 코드를 입력해 보겠습니다.
5. 표시된 부분에 있는 ① 매크로 선택을 클릭하여 기본 매크로 창을 열어주신 뒤, 아직은 저장하지 않은 ② 제목 없음 1 을 선택하고 Standard 폴더를 선택한 뒤, ③ 새로 만들기를 눌러주세요.
6. 이름은 적당하게 "Module1" 이라고 설정합니다. 그런 다음 표시된 부분에 다음과 같은 명령어를 입력해 주세요.
Option VBASupport 1 Sub Main MsgBox "리브레 오피스에서 vba 테스트", vbInformation, "알림" End Sub
7. 그런 다음 창을 닫고 (별도의 저장은 필요 없습니다.) 도구 -> 사용자 정의 에서 만든 매크로를 단축키로 설정합니다.
8. 사용자 정의 창에서 키보드 탭에 들어간 뒤, 우측에서 Calc 로 설정되어 있는 것을 확인하고 스크롤을 내린 뒤 비어 있는 Alt + 1 번에 매크로를 지정하기로 하였습니다.
9. 카테고리에서 LibreOffice 매크로안에 만들었던 함수를 선택하신 뒤, 다시 Alt + 1 글자 부분을 클릭하시면 우측의 수정버튼이 활성화 됩니다. 수정 버튼이 활성화가 안된다면 밑에 있는 것과 번갈아 가며 선택해 보세요.
10. 아래와 같이 설정 된 것을 확인하시고 OK 를 눌러 창을 빠져나오면 단축키 설정 까지 끝 입니다.
11. 이제 창에서 Alt + 1 키를 눌러보면 의도한 대로 알림창이 등장하는 모습을 보실 수 가 있게 됩니다.
비주얼 베이직에서 MsgBox 는 이렇게 알림창을 표시하는 코드 입니다. 기억해두시면 스크립트 작동 여부를 체크할 때 유용합니다.
조금 더 어려운 vba 매크로 샘플 코드
이번에는 반복문과 시트에 값을 입력하는 코드를 사용해 매크로를 실행해 보았습니다.
Sub Macro1() Dim i As Integer ' A1부터 A10까지의 셀에 각각 1부터 10까지의 숫자를 입력 For i = 1 To 10 Cells(i, 1).Value = "리브레오피스 셀" & i Next i End Sub
1. i 를 숫자로 선언
2. 1 부터 10 까지 총 10번을 반복하며 i 에 1,2,3,4,5..... 를 하나씩 넣습니다.
3. 열 값 1 번, 행값 1번 에 리브레 오피스 셀 1 이라는 단어를 넣습니다.
4. i를 2로 만들어 열 값 2번 , 행값 1번에 리브레 오피스 셀 2 라는 단어를 넣습니다.
이렇게 반복문 또한 적용이 되는 모습을 보실 수 있습니다. 이 매크로도 위에서 알려 드린 것 처럼 단축키에 등록해 보세요. 결과물은 아래 이미지와 같습니다.
완료되셨으면 엑셀 파일을 2번에서 저장한 형식 그대로 저장해 주세요. 만약 ods -> xlsx 나 xlsx -> ods 와 같이 변환을 하게 되면 코드를 다시 옮겨야 하는 번거로움이 생깁니다!
결론
간단하게 리브레 오피스에서 엑셀 매크로를 사용해 보았습니다. 원래 리브레 오피스는 vba 코드가 아닌 Basic 이라는 비슷하면서도 어려운 코드를 지원했었는데 만약 리브레 오피스를 사내에서 주로 사용하고 새로 문서를 만들어야 한다면 Basic 이라는 코드를 배우시는 것이 좋을 것 같습니다.
하지만 그런 경우는 소수 이므로 이 글에서 알려 드린 것 처럼 처음 부터 엑셀 확장자로 (.xlsx) 저장하고 vba 코드를 사용하시면 될 것 같습니다. 긴 글을 읽어 주셔서 감사하고 도움이 되셨으면 합니다!