셀레니움 브라우저선택하기
AppActivate Application.Caption으로 브라우저에서 엑셀이 선택되면서Application.SendKeys들이 엑셀창에서 실행됩니다.
다시 브라우저로 돌아갈려면 어떻게 해야할까요?
브라우저 종류후 재실행하면 시간이 더 걸립니다.
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim blnX As Boolean
Sub Stop_()
blnX = True
End Sub
Sub 조회()
Dim Egb As New Selenium.WebDriver
Dim ele As WebElement
Dim count As Integer
' Dim Keys As New Selenium.Keys
Dim rAry As Range
Dim k As Long
Dim i As Integer
Dim j As Integer
Dim iTime As Integer
Dim a As Variant
Dim iR As Integer, iC As Integer, iOff As Integer
blnX = False
On Error GoTo g1
Application.Calculation = xlCalculationManual '수동
' Egb.AddArgument ("headless") '숨기기
Egb.Start "Chrome"
Egb.Wait (2000)
Egb.Get "http://kras.gwangju.go.kr/land_info/info/landprice/landprice.do" '광주
For i = Range("q3") To Range("r3")
If blnX = True Then End
Egb.FindElementByCss("select[name='sggnm']").SendKeys Range("a" & i) '구
Egb.Wait (500)
Egb.FindElementByCss("select[name='umdnm']").SendKeys Range("b" & i) '동
Egb.Wait (500)
Egb.FindElementByCss("input[title='본번']").SendKeys Range("c" & i) '본번
Egb.Wait (500)
Application.SendKeys "{tab}" '부번선택
Egb.SendKeys Range("d" & i) '부번입력
Egb.Wait (500)
Application.SendKeys "{tab}" '입력선택
Egb.Wait (500)
SendKeys "{enter}", True '입력누름
'Egb.FindElementByCss("element_test").SendKeys Keys.Enter '//Keys.TAB, Keys.CONTROL, "v"
Egb.Wait (2000)
For Each td In Egb.FindElementsByCss(".table0202 tr:nth-of-type(2) td")
Cells(i, u + 5) = td.Text
u = u + 1
Next
u = 0
Egb.Wait (1000)
Egb.FindElementByCss("input[title='본번']").Clear '자료삭제
Egb.Wait (500)
Application.SendKeys "{tab}" '부번선택
Egb.Wait (500)
Application.SendKeys "{bs}" '부번삭제
Egb.Wait (500)
Application.SendKeys "{bs}" '부번삭제
AppActivate Application.Caption'엑셀창
DoEvents
Next
Egb.Close
Set Egb = Nothing
g1:
Application.Calculation = xlCalculationAutomatic '자동
End Sub
번호 | 카테고리 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
📌 -- VBA 기초-활용 4주 완성, 특별 스터디 모집을 시작합니다! ~7/8(금) 까지 -- 📌 (89)
![]() ![]() |
![]() ![]() |
2022.06.23 | 101 | 15578 | ||
공지사항 | 함수/공식 |
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐
(79)
오빠두엑셀
|
2021.10.28
|
추천 95
|
조회 5319
|
![]() ![]() |
2021.10.28 | 95 | 5319 |
38370 | VBA |
New 행에 마지막 입력값 삭제하는 방법 문의 드림니다.
![]() ![]() |
![]() |
17:36 | 0 | 13 |
38356 | VBA |
New VBA 또는 매크로 사용하여 시트1의 원한는 내용만 시트2에 표기하는 스크립트 문의 합니다.
![]() ![]() ![]() ![]() |
![]() ![]() |
16:30 | 1 | 15 |
38287 | VBA |
New VBA 범위 입력 소스 문의 합니다.
(6)
답변완료
![]() ![]() |
![]() ![]() |
08:36 | 1 | 39 |
38284 | 기능/도구 |
New 엑셀 여러가지파일 탭으로 보기
![]() ![]() |
![]() |
08:18 | -1 | 27 |
38260 | 파워쿼리/피벗 |
New 청사 출입기록을 월별, 인원별로 정리하고 싶은데 선배님들 조언을 구합니다.
![]() ![]() ![]() |
![]() |
03:30 | 0 | 22 |
38258 | VBA |
New 기준열과 동일하게 셀병합 하는 vba
![]() ![]() ![]() |
![]() |
02:10 | 0 | 39 |
38251 | 함수/공식 |
New 엑셀 다중조건으로 다른시트에 추출후 수정해서 원본시트에 업데이트방법?
![]() ![]() ![]() |
![]() ![]() |
00:33 | 0 | 25 |
38197 | VBA |
New VBA 매크로 SelectionChange 명령문(스크립트) 조언 받고자 합니다.
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.01 | 0 | 22 |
38191 | 함수/공식 |
New 특정 텍스트만 추출하는 함수에서..
(1)
답변완료
![]() |
![]() |
2022.07.01 | 0 | 25 |
38187 | 기능/도구 |
New 엑린이] 시트값을 자동으로 불러오고 싶습니다
(1)
![]() |
![]() |
2022.07.01 | 0 | 26 |
38183 | VBA |
New VBA 매크로 SelectionChange 명령문 조언 받고자 합니다.
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.01 | 1 | 36 |
38182 | 함수/공식 |
New FILTER함수 사용시에 함수가 안먹히는 문제
![]() ![]() ![]() |
![]() ![]() |
2022.07.01 | 0 | 23 |
38177 | 함수/공식 |
New 값을 찾아 가져오고 싶습니다.
![]() ![]() |
![]() |
2022.07.01 | 0 | 18 |
38175 | 문서서식 |
New 핸드폰 번호 서식을 통일 시키고 싶습니다...
(2)
![]() |
![]() |
2022.07.01 | 0 | 19 |
38154 | 함수/공식 |
New 재고파일을 만들고 있는데 수식이.. ㅠㅠ
![]() ![]() |
![]() |
2022.07.01 | -1 | 38 |
38152 | VBA |
New Sharepoint에 있는 파일에서 ADODB를 이용해 데이터 추출시 에러 발생하는데, 해결방법에 대해 도움 부탁 드립니다
(3)
답변완료
![]() |
![]() |
2022.07.01 | 0 | 21 |
38150 | 함수/공식 |
New MATCH함수 문의
![]() ![]() ![]() |
![]() |
2022.07.01 | 0 | 21 |
38149 | 함수/공식 |
New 번호 매기기 원하는 "0" 제외하고 번호 매기기 ~ 고수님 부탁드립니다.
(4)
답변완료
![]() |
![]() |
2022.07.01 | 0 | 17 |
38148 | 함수/공식 |
New 선생님들 엑셀 너무 어렵습니다. 알려주세요. ㅠㅠ
![]() ![]() |
![]() |
2022.07.01 | -1 | 26 |
38129 | 함수/공식 |
New 재고 관리에서 악성재고를 추려내고자 하는데....
(3)
답변완료
![]() |
![]() |
2022.07.01 | -2 | 41 |
38122 | VBA |
New if 문에서 A=B or C or D의 표현 방법이 무엇인가요?
(2)
![]() ![]() |
![]() ![]() |
2022.07.01 | 0 | 26 |
38105 | VBA |
New 엑셀 파일내 모든 테두리선 일괄변경 관련
![]() |
![]() |
2022.07.01 | -1 | 30 |
38097 | 함수/공식 |
New 뒤자리 0을 없에는 함수을 알고 싶어요?
![]() ![]() |
![]() |
2022.07.01 | 0 | 32 |
38093 | 문서서식 |
New [질문] 숫자 123... 을 하나둘셋 으로 표기 하는 법
(2)
![]() |
![]() |
2022.07.01 | 0 | 23 |
38091 | 함수/공식 |
New 도와주세요ㅜㅜ 값을 찾아서 가져오고 싶습니다.
![]() ![]() |
![]() |
2022.07.01 | 0 | 28 |
38020 | VBA |
New VBA 클리어 사용하여 특정 셀만 지우고자 합니다.
![]() ![]() ![]() |
![]() ![]() |
2022.07.01 | 0 | 28 |
37986 | VBA |
New VBA로 생성된 두 개의 피벗 테이블 슬라이서 연동
![]() ![]() |
![]() |
2022.06.30 | 0 | 23 |
37955 | VBA |
New 각 조합 별 중복사용자 수 추출방법 알려주실분..
![]() ![]() |
![]() |
2022.06.30 | 0 | 31 |
37804 | 함수/공식 |
New 문의합니다) 조건부 서식 채우기
![]() ![]() ![]() |
![]() ![]() |
2022.06.30 | 0 | 50 |
37779 | 문서서식 |
New 조건부서식으로 글자크기 변경
(2)
답변완료
![]() |
![]() |
2022.06.30 | 0 | 32 |
@나야 님 AppActivate는 이런 식으로 사용하시면 됩니다.
윈도우 타이틀을 정확히 안다면 위와 같이 간단하게 써도 됩니다.
윈도우 핸들을 변수에 담아서 필요할 때 다시 해당 윈도우로 이동하는 것도 가능합니다. 만약 새 창으로 바로 이동(팝업창처럼)해야 하는 경우 포커싱을 해야할 때 SwitchToNextWindow, SwitchToPreviousWindow 이렇게 창 전환도 가능합니다.
그런데 오히려 제가 궁금한 건, 엑셀 VBA에서 Selenium을 이용해 브라우저를 컨트롤하는데 굳이 포커스를 브라우저로 이동시키는 동작이 필요할까, 입니다. VBA가 일종의 컨트롤 타워여서 브라우저의 내용을 크롤링/파싱해서 엑셀에 출력하고, 엑셀의 값을 브라우저의 input이나 text 필드로 보내는 것 다 가능한데요. 문제가 어렵고 복잡해지는 이유가 Application.SendKeys를 쓰는 것 때문이라는 짐작이 갑니다. 이 메서드를 쓰려면 반드시 해당 윈도우로 포커싱을 해야 하기 때문이지요. 하지만 브라우저와 엑셀 간이라면 Application.SendKeys를 사용하지 않고 자유롭게, 심지어 창을 화면에서 아예 내려놓고 백그라운드에서도 키 입력과 클릭이 다 가능하거든요. 굳이 창 전환이라는 게 필요가 없어 보입니다. 오히려 사이트 내에서 iframe을 사용한 경우 Element를 찾기 위해서는 frame 전환이 필요하지만요. Application.SendKeys 의존도를 좀 낮추는 방법을 찾으시는 게 좋을 것 같습니다. 브라우저가 아닌 다른 프로그램의 컨트롤이나 Text Area에 VBA로 접근해야 할 경우 Window Handle을 찾아서(Window API 활용) 포커싱을 해야 하는데, Application.SendKeys는 가급적 이런 제한된 경우, VBA에서 직접 제어가 어려운 경우에 한해 사용해 보시길 권해드립니다.
@나는나 님 감사합니다 잘해결해볼게요