근무 특성상 인트라넷을 사용 중인데 엑셀로 마우스 클릭이나키보드 키를 입력하는 vba를 만들고 싶은데 코드를 짜주실 분있으신가요? 인터넷에 돌아다니는 각종 프로그램은 쓸수가 없어서 직접 쳐서 만들려고 합니다
엑셀 VBA로 마우스나 키보드 입력을 자동으로 보내서 화면잠금 방지(유휴 방지, Anti-Idle) 하는 방법이 실제로 많이 쓰입니다.
아래는 가장 기본적이고 많이 사용하는 "주기적 키보드 입력 시뮬레이션" 예제입니다.
#If VBA7 Then
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As LongPtr, ByVal dwExtraInfo As LongPtr)
#Else
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
#End If
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:05:00"), "AntiIdle" ' 5분마다 실행
End Sub
Sub AntiIdle()
Const VK_SCROLL = 145
Const KEYEVENTF_KEYDOWN = 0
Const KEYEVENTF_KEYUP = 2
' Scroll Lock 키를 누르고 떼기 (상태 그대로)
keybd_event VK_SCROLL, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_SCROLL, 0, KEYEVENTF_KEYUP, 0
' 5분 후 다시 실행 예약
Application.OnTime Now + TimeValue("00:05:00"), "AntiIdle"
End Sub
✅ 설명
5분마다 Scroll Lock 키를 눌렀다 떼는 것을 반복합니다.
실제로 스크롤락 키의 ON/OFF 상태는 변경되지 않고 키 이벤트만 발생합니다.
이 방식으로 윈도우에서 사용자 활동으로 인식되어 화면잠금이 되지 않습니다.
인트라넷, 사내망, 보안PC에서도 VBA 내장으로 직접 사용 가능
✅ 사용 방법
VBA 편집기 (Alt + F11)
ThisWorkbook → Workbook_Open() 넣기
새 모듈 추가 후 AntiIdle() 함수 작성
매번 엑셀 열 때 자동으로 시작됨
✅ 팁
보안 프로그램으로 차단되지 않음 (인트라넷용 추천)
TimeValue("00:05:00") → 원하는 주기로 변경 가능 (예: 10분 00:10:00)
Scroll Lock 말고도 F15(없음), Shift 등 비사용 키로 변경 가능
AI 분석 및 채팅