엑셀 / VBA / 매크로 만들고 실행하기
엑셀 매크로는 Visual Basic 편집기의 표준 모듈에 VBA 코드를 작성하고 Alt+F8에서 선택해 실행할 수 있습니다. 아래 예제는 지정한 시트의 A1 셀에 HELLO를 입력합니다. 기존 셀 값이 덮어써지므로 빈 연습 파일이나 복사본에서 진행하세요.
메뉴 경로와 단축키는 Windows용 데스크톱 Excel 기준입니다. 버전과 리본 메뉴 구성에 따라 이름·위치가 다를 수 있습니다.
실행 전 준비
VBA(Visual Basic for Applications)는 Office 작업을 자동화하는 프로그래밍 언어입니다. [개발 도구] 탭이 없다면 리본에 개발 도구 추가하기를 먼저 참고합니다. 웹용 Excel에서는 이 데스크톱 VBA 예제를 실행할 수 없습니다.
VBA 작업은 일반적인 Ctrl+Z로 되돌릴 수 있다고 가정하지 않습니다. 연습할 시트와 대상 셀을 확인하고 실행 전 파일을 별도로 저장합니다. 다른 사람이 준 매크로는 출처뿐 아니라 실제 코드의 동작도 확인하세요.
기능과 적용 제품은 Microsoft의 매크로 실행 안내, Microsoft의 매크로 보안 설정 안내, Microsoft의 ThisWorkbook 설명에서 확인할 수 있습니다.
표준 모듈 만들기
- [개발 도구] → [Visual Basic]을 누르거나 Alt+F11을 누릅니다.
Visual Basic 편집기에서 현재 연습 파일의 프로젝트를 찾습니다. 여러 파일을 열었다면 다른 통합 문서의 프로젝트에 코드를 넣지 않도록 파일 이름을 확인합니다.
- 해당 프로젝트를 선택하고 [삽입] → [모듈]을 누릅니다. 프로젝트 탐색기에서 마우스 오른쪽 버튼으로 같은 명령을 선택할 수도 있습니다.
새 모듈의 코드 창을 엽니다. 여기서는 시트 이벤트 코드 창이 아니라 [모듈] 아래의 표준 모듈을 사용합니다.
A1 셀에 HELLO 입력하기
Sub SayHello()
Sheet1.Range("A1").Value = "HELLO"
End Sub
- 위 코드를 모듈에 입력합니다. SayHello는 매크로 이름이고 Range("A1")은 값을 입력할 대상 셀입니다. 따옴표는 문자열을 표시하는 일반적인 큰따옴표를 사용합니다.
Sheet1은 시트 탭의 표시 이름이 아니라 VBA의 코드 이름입니다. 프로젝트 탐색기에 Sheet1(시트1)처럼 표시되면 앞의 Sheet1을 뜻합니다. 코드 이름이 다르면 예제의 Sheet1을 해당 이름으로 바꾸어야 합니다.
탭 이름으로 지정하려면 ThisWorkbook.Worksheets("자료").Range("A1").Value = "HELLO"처럼 쓸 수 있습니다. 이 경우 실제 탭 이름이 ‘자료’여야 하며 ThisWorkbook은 코드를 저장한 통합 문서입니다. 활성 파일과 항상 같은 것은 아닙니다.
- 편집기에서 엑셀로 돌아가 [개발 도구] → [매크로]를 누르거나 Alt+F8을 누릅니다.
- 목록의 SayHello를 선택하고 [실행]을 누릅니다. 실행 전 A1에 보존할 값이 없는지 다시 확인합니다.
대상 시트의 A1에 HELLO가 입력되었는지 확인합니다. 다른 시트가 보이는 상태여도 코드는 지정된 시트에 값을 씁니다.
여러 셀로 대상 변경하기
Sub SayHello()
Sheet1.Range("A1:A10").Value = "HELLO"
End Sub
- 기존 매크로에서 Range의 주소를 A1:A10으로 바꿉니다. 같은 이름의 Sub를 두 개 추가하지 말고 기존 프로시저의 내용만 수정합니다.
다시 실행하면 A1부터 A10까지 각 셀에 같은 문구가 입력됩니다. 범위를 넓히면 그 범위의 기존 수식과 값도 바뀌므로 대상 주소를 반드시 확인하세요.
매크로를 포함해 저장하기
- [다른 이름으로 저장]에서 [Excel 매크로 사용 통합 문서(*.xlsm)]를 선택합니다. .xlsx로 저장하면 VBA를 보존할 수 없습니다.
저장한 뒤 파일을 다시 열어 코드가 남아 있는지 확인합니다. 매크로 목록에 보이지 않으면 올바른 프로젝트의 표준 모듈에 매개변수 없는 Sub로 작성했는지 확인하고, 컴파일 오류와 보안 차단을 구분해 점검합니다. 보안 경고가 나타났다는 이유만으로 신뢰 여부를 확인하지 않은 코드를 허용하지 마세요.
![[개발 도구] → [Visual Basic]을 누르거나 Alt+F11을 누릅니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-01.png)

![해당 프로젝트를 선택하고 [삽입] → [모듈]을 누릅니다. 프로젝트 탐색기에서 마우스 오른쪽 버튼으로 같은 명령을 선택할 수도 있습니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-03.png)
![새 모듈의 코드 창을 엽니다. 여기서는 시트 이벤트 코드 창이 아니라 [모듈] 아래의 표준 모듈을 사용합니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-04.png)

![편집기에서 엑셀로 돌아가 [개발 도구] → [매크로]를 누르거나 Alt+F8을 누릅니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-06.png)
![목록의 SayHello를 선택하고 [실행]을 누릅니다. 실행 전 A1에 보존할 값이 없는지 다시 확인합니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-07.png)



![[다른 이름으로 저장]에서 [Excel 매크로 사용 통합 문서(*.xlsm)]를 선택합니다. .xlsx로 저장하면 VBA를 보존할 수 없습니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-11.png)









