Application 개체

Run 메서드

노만e 2025. 3. 14. 04:38

엑셀 VBA에서 Application.Run 메서드는 매크로 또는 다른 VBA 프로시저를 실행하는 기능을 제공합니다.

즉, 동적으로 VBA 함수를 호출하거나, 다른 워크북의 매크로를 실행할 때 사용됩니다.


1. 기본 문법

Application.Run "매크로이름"
매개변수
설명
"매크로이름"
실행할 매크로(서브루틴) 또는 함수의 이름
매개변수1, 매개변수2, ...
실행할 매크로에 전달할 인수

📌 VBA의 Call 또는 Sub() 호출 방식과 달리 문자열을 사용하여 실행 가능

📌 동적으로 함수 이름을 변경하거나, 외부 파일의 매크로 실행 가능


2. 기본 사용법 (같은 워크북 내 매크로 실행)

Sub 다른매크로_실행()
Application.Run "내매크로"
End Sub
Sub 내매크로()
MsgBox "내매크로가 실행되었습니다!"
End Sub

📌 현재 워크북에서 내매크로라는 매크로 실행


3. 매개변수를 포함하여 실행

Sub 다른매크로_실행_매개변수()
Application.Run "매개변수매크로", "안녕하세요!", 10
End Sub
Sub 매개변수매크로(문자 As String, 숫자 As Integer)
MsgBox "문자: " & 문자 & vbNewLine & "숫자: " & 숫자
End Sub

📌 매크로 실행 시 "안녕하세요!"와 10을 인수로 전달


4. 외부 워크북(.xlsm)의 매크로 실행

Sub 외부매크로_실행()
Application.Run "'C:\Users\Public\외부파일.xlsm'!외부매크로"
End Sub

📌 외부 파일(외부파일.xlsm)에 있는 외부매크로 실행

📌 파일 경로와 매크로 이름을 '워크북이름'!매크로명 형식으로 작성

📌 외부 파일이 열려 있어야 함 (Workbooks.Open으로 열 수 있음)


5. 외부 워크북을 열고 매크로 실행

Sub 외부파일_열고_매크로실행()
Dim 외부파일 As Workbook
Set 외부파일 = Workbooks.Open("C:\Users\Public\외부파일.xlsm")

Application.Run "'외부파일.xlsm'!외부매크로"

외부파일.Close False ' 변경 사항 저장 없이 닫기
End Sub

📌 외부 파일을 열고, 외부매크로 실행 후 저장 없이 닫기


6. 동적으로 매크로 이름 설정 후 실행

Sub 동적매크로_실행()
Dim 매크로이름 As String
매크로이름 = "내매크로" ' 실행할 매크로 이름

Application.Run 매크로이름
End Sub

 

📌 변수에 저장된 매크로 이름을 사용하여 실행


7. 사용자 입력을 받아 특정 매크로 실행

Sub 사용자입력_매크로실행()
Dim 매크로 As String
매크로 = InputBox("실행할 매크로 이름을 입력하세요:")
If 매크로 <> "" Then
Application.Run 매크로
Else
MsgBox "매크로 실행이 취소되었습니다.", vbExclamation
End If
End Sub

📌 사용자가 입력한 매크로를 실행하도록 설정


8. 현재 열려 있는 다른 워크북의 매크로 실행

Sub 열린워크북_매크로실행()
Dim 대상워크북 As Workbook
Set 대상워크북 = Workbooks("외부파일.xlsm")

Application.Run "'" & 대상워크북.Name & "'!외부매크로"
End Sub

 

📌 현재 열려 있는 외부파일.xlsm에서 외부매크로 실행


9. Run을 사용하여 함수의 반환값 받기

Sub 함수결과_받기()
Dim 결과 As Integer
결과 = Application.Run("더하기함수", 5, 3)
MsgBox "계산 결과: " & 결과
End Sub
Function 더하기함수(숫자1 As Integer, 숫자2 As Integer) As Integer
더하기함수 = 숫자1 + 숫자2
End Function

Function

📌 VBA 함수(더하기함수)를 실행하고 반환값을 변수에 저장


10. On Error Resume Next로 오류 방지

Sub 매크로실행_오류처리()
On Error Resume Next
Application.Run "없는매크로"

If Err.Number <> 0 Then
MsgBox "매크로를 찾을 수 없습니다!", vbCritical
Err.Clear
End If
End Sub

📌 매크로가 존재하지 않을 경우 오류 발생을 방지하고 메시지 표시


📝 정리

기능
VBA 코드
같은 워크북의 매크로 실행
Application.Run "매크로명"
매개변수 포함 실행
Application.Run "매크로명", 값1, 값2
외부 워크북 매크로 실행
Application.Run "'파일경로.xlsm'!매크로명"
외부 파일 열고 실행 후 닫기
Workbooks.Open "경로": Application.Run "매크로명"
동적으로 매크로 실행
Dim 매크로: 매크로 = "이름": Application.Run 매크로
사용자 입력 매크로 실행
Application.Run InputBox("매크로 이름 입력")
현재 열린 워크북 매크로 실행
Application.Run "'" & Workbooks("파일명.xlsm").Name & "'!매크로명"
함수 실행 후 반환값 받기
Dim 결과: 결과 = Application.Run("함수명", 값1, 값2)
오류 방지 (On Error Resume Next)
If Err.Number <> 0 Then MsgBox "오류 발생"

🔥 VBA의 Run 메서드를 활용하면 매크로를 동적으로 실행하고, 외부 파일의 매크로도 호출할 수 있습니다! 🚀