|
‘//원하는 윈도우를 포커스하기 위한 선언
Private Declare Function SetForegroundWindow Lib “user32” (ByVal hwnd As Long) As Long ‘//윈도우 핸들을 찾기 위한 선언 Private Declare Function FindWindow Lib “user32” Alias “FindWindowA” (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
‘//일정시간을 대기하는 함수 *Sleep(n) = n/1000초 동안 대기 Private Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
‘//키보드 상태확인을 위한 선언하기 Private Declare Function GetAsyncKeyState Lib “user32” (ByVal vKey As Long) As Integer ‘//키입력을 위한 선언하기 Const KEYEVENTF_EXTENDKEY = &H1 Const KEYEVENTF_KEYUP = &H2 Private Declare Sub keybd_event Lib “user32.dll” (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
‘//인터넷 익스플로러 선언
‘//도구-참조-Microsoft Internet controls (또는 C:\windows\system32\shdocvw.dll)
Dim IE As New InternetExplorer ‘//기억할 윈도우 핸들 Dim IEhWnd
Sub Macro1()
‘//익스플로러를 열어 지정해둔 주소로 접속한다 IE.Visible = True IE.Navigate “naver.com” IEhWnd = IE.hwnd ‘//새로 열린 윈도우 핸들을 기억한다
Call LoadWait ‘//로딩중 대기
Call goIE ‘//로딩 끝나면, 익스플로러를 열고(goIE)
Call KeyA: Call Enter: Call LoadWait ‘//”A”를 검색하고 로딩대기
Call KeyB: Call Enter: Call LoadWait ‘//”B”를 검색하고 로딩대기
Call KeyC: Call Enter: Call LoadWait ‘//”C”를 검색하고 로딩대기
‘Call goExcel ‘//엑셀로 돌아오기 End Sub
Function LoadWait() ‘//로딩하는 동안 대기한다
If IE.hwnd <> 0 Then ‘//익스플로러가 켜져있을 때만 Do While IE.Busy Or IE.ReadyState <> READYSTATE_COMPLETE ‘//익스플로러가 로딩 중이면 대기한다 DoEvents Loop Sleep (1000)
Else MsgBox “익스플로러가 켜져있지 않습니다” End End If End Function
Function goIE() ‘//기억해둔 윈도우 핸들을 불러낸다. ‘// 참고로 “IEhWnd = FindWindow(“IEFrame”, vbNullString)”라는 ‘// 1줄을 추가하면 익스플로러를 찾아서 불러낸다 Call SetForegroundWindow(IEhWnd) Call Sleep(1000) ‘//1초 쉰다 End Function
Function goExcel() ‘//다른 창에서 작업하다가 다시 엑셀로 돌아갈 때 유용하다
Dim ihWnd As Long ihWnd = FindWindow(vbNullString, Application.Caption)
If ihWnd = 0 Then MsgBox “현재 엑셀을 찾을 수 없습니다” Else Call SetForegroundWindow(ihWnd) End If End Function
Function Enter() keybd_event 13, 0, 0, 0 ‘//엔터 keybd_event 13, 0, KEYEVENTF_KEYUP, 0 Call Sleep(100) ‘//0.1초 쉰다
DoEvents End Function
Function KeyA() keybd_event 65, 0, 0, 0 ‘//A키 keybd_event 65, 0, KEYEVENTF_KEYUP, 0 Call Sleep(100) ‘//0.1초 쉰다
DoEvents End Function
Function KeyB() keybd_event 66, 0, 0, 0 ‘//B키 keybd_event 66, 0, KEYEVENTF_KEYUP, 0 Call Sleep(100) ‘//0.1초 쉰다 DoEvents End Function
Function KeyC() keybd_event 67, 0, 0, 0 ‘C키 keybd_event 67, 0, KEYEVENTF_KEYUP, 0 Call Sleep(100) ‘//0.1초 쉰다
DoEvents End Function
|