Application 개체

SendKeys 메서드

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

엑셀 VBA에서 SendKeys 메서드는 키보드 입력을 자동으로 실행하는 기능을 제공합니다.

즉, 사용자가 키보드를 눌러야 하는 작업을 VBA 코드로 자동화할 때 사용됩니다.


1. 기본 문법

Application.SendKeys "키입력"
매개변수
설명
"키입력"
키보드에서 입력할 키 또는 조합
Wait (옵션)
True이면 키 입력이 완료될 때까지 기다림, False이면 즉시 실행 후 다음 코드 진행

📌 엑셀 창에서 활성화된 상태에서만 동작함

📌 단축키를 자동화할 수 있지만, 키 입력이 정확하지 않을 수 있음


2. 기본 사용법 (Enter 키 입력)

Sub 엔터키_입력()
Application.SendKeys "~"
End Sub

📌 현재 활성화된 창에서 Enter(~) 키를 자동 입력


3. Ctrl + S (저장) 입력

Sub 단축키_저장()
Application.SendKeys "^s"
End Sub

📌 Ctrl + S를 눌러 현재 파일을 저장


4. 다이얼로그에서 Enter 입력

Sub 메시지박스_확인클릭()
MsgBox "확인을 눌러야 다음 단계 진행"
Application.SendKeys "~", True
End Sub

📌 메시지 박스를 표시한 후 자동으로 Enter 키를 눌러 닫음


5. 엑셀을 닫을 때 Ctrl + W 입력

Sub 엑셀닫기()
Application.SendKeys "^w"
End Sub

📌 Ctrl + W를 사용하여 현재 엑셀 창을 닫음


6. Alt 키를 이용한 메뉴 실행 (Alt + F4 → 창 닫기)

Sub 창닫기_AltF4()
Application.SendKeys "%{F4}"
End Sub

📌 Alt + F4 키 조합을 사용하여 현재 창을 닫음


7. 복사(Ctrl + C) & 붙여넣기(Ctrl + V), 실행 취소(Ctrl + Z)

Sub 복사_붙여넣기_실행취소()
Application.SendKeys "^c", True ' Ctrl + C (복사)
Application.SendKeys "^v", True ' Ctrl + V (붙여넣기)
Application.SendKeys "^z", True ' Ctrl + Z (실행 취소)
End Sub

📌 복사, 붙여넣기, 실행 취소를 자동 실행


8. 자동으로 F2 (편집 모드) 후 Enter

Sub 편집모드_확정()
Application.SendKeys "{F2}" ' F2 (편집 모드)
Application.SendKeys "~" ' Enter (확정)
End Sub

📌 현재 선택된 셀을 F2로 편집하고, Enter로 확정


9. 워크시트에서 Ctrl + A 입력 (전체 선택)

Sub 전체선택()
Application.SendKeys "^a"
End Sub

📌 Ctrl + A를 사용하여 전체 선택


10. Alt + Tab으로 창 전환

Sub 창전환()
Application.SendKeys "%{TAB}"
End Sub

📌 Alt + Tab을 사용하여 창 전환


11. 특정 창을 활성화하고 SendKeys 실행

Sub 특정창_활성화_후_입력()
AppActivate "메모장"
Application.SendKeys "^v"
End Sub

📌 "메모장" 창을 활성화한 후 Ctrl + V (붙여넣기) 실행


12. 탭 이동 (Tab, Shift + Tab)

Sub 탭이동()
Application.SendKeys "{TAB}" ' 다음 필드로 이동
Application.SendKeys "+{TAB}" ' 이전 필드로 이동
End Sub

📌 Tab 키로 다음 필드 이동, Shift + Tab으로 이전 필드 이동


13. 셀 탐색 (화살표 키)

Sub 셀탐색_화살표()
Application.SendKeys "{RIGHT}" ' 오른쪽 이동
Application.SendKeys "{DOWN}" ' 아래로 이동
End Sub

📌 오른쪽(→), 아래쪽(↓)으로 이동


14. 숫자 입력 후 Enter 키 입력

Sub 숫자입력_확정()
ActiveCell.Value = 100
Application.SendKeys "~"
End Sub

📌 현재 선택된 셀에 100을 입력한 후 Enter 키 입력


15. 함수 입력 후 Ctrl + Shift + Enter 실행 (배열 수식 입력)

Sub 배열수식_입력()
ActiveCell.Formula = "=SUM(A1:A10)"
Application.SendKeys "^+~"
End Sub

📌 배열 수식을 입력한 후 Ctrl + Shift + Enter로 확정


❌ SendKeys 사용 시 주의할 점

  1. 비효율적일 수 있음 → SendKeys는 키보드 입력을 흉내 내므로 불안정할 수 있음.
  2. 예상치 못한 동작 발생 가능 → 실행 중 다른 창이 활성화되면 키 입력이 엉뚱한 곳에 입력될 수 있음.
  3. 대체 방법 고려 → VBA의 기본 메서드(Range.Formula, Workbook.Save, Application.Dialogs)를 사용하면 더 안정적.

📝 정리

기능
VBA 코드
엔터 키 입력
Application.SendKeys "~"
Ctrl + S (저장)
Application.SendKeys "^s"
메시지 박스 확인 클릭
Application.SendKeys "~", True
엑셀 닫기 (Ctrl + W)
Application.SendKeys "^w"
Alt + F4 (창 닫기)
Application.SendKeys "%{F4}"
복사 (Ctrl + C)
Application.SendKeys "^c"
붙여넣기 (Ctrl + V)
Application.SendKeys "^v"
실행 취소 (Ctrl + Z)
Application.SendKeys "^z"
편집 모드 (F2) 후 엔터
Application.SendKeys "{F2}": Application.SendKeys "~"
전체 선택 (Ctrl + A)
Application.SendKeys "^a"
창 전환 (Alt + Tab)
Application.SendKeys "%{TAB}"
탭 이동 (Tab, Shift + Tab)
Application.SendKeys "{TAB}": Application.SendKeys "+{TAB}"
화살표 이동 (, )
Application.SendKeys "{RIGHT}": Application.SendKeys "{DOWN}"
숫자 입력 후 엔터
ActiveCell.Value = 100: Application.SendKeys "~"
배열 수식 입력 (Ctrl + Shift + Enter)
Application.SendKeys "^+~"

🔥 SendKeys는 단축키 입력 자동화를 위한 기능이지만, 더 안정적인 VBA 메서드를 활용하는 것이 좋습니다! 🚀