다운로드 가능한 주소 확인하기
크롬 드라이버는 아래 주소에서 목록을 확인할 수 있습니다.
https://googlechromelabs.github.io/chrome-for-testing/#stable
목록을 보면 자신의 상황에 맞는 드라이버를 다운로드할 수 있습니다.
저는 윈도우11 환경에서 사용할 수 있는 드라이버를 다운로드할 계획입니다.
이 주소를 브라우저에 입력하면 바로 다운로드가 진행됩니다.
물론 지난 블로그에서 작성했던 것과 같이
특정 버전을 알면 해당 버전도 주소를 변경해 다운로드 할 수 있습니다.
아래 빨간색 부분을 바꾸면 원하는 버전을 다운로드 할 수 있습니다.
https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.69/win64/chromedriver-win64.zip
VBA로 해당 파일 다운로드 하기
코드를 작성하기 전에 먼저 라이브러리를 참조해야합니다.
VBA를 실행하고
참조에서 아래 두 가지 라이브러리를 추가하시면 됩니다.
Microsoft XML, v6.0 (이건 선택입니다.)
Microsoft ActiveX Data Objects x.x Library
먼저 해당 URL로 요청을 보내는 코드입니다.
아래 Url에서 130.0.6723.69 부분만 수정하면
윈도우11 64비트 환경에서 작동하는 원하는 버전의 ChromeDriver를 다운로드할 수 있습니다.
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
Url = "https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.69/win64/chromedriver-win64.zip"
http.Open "GET", Url, False
http.send
그다음 요청이 제대로 이루어졌는지 확인합니다.
http.status가 200이면 제대로 연결이 되었다는 것입니다.
If http.Status = 200 Then
< 실행 코드>
Else
MsgBox "다운로드 실패: HTTP 상태 코드 " & http.Status
End If
다음은 파일이 제대로 다운로드되었는지 확인하는 코드입니다.
처음 접속했을 때 파일의 용량을 확인하고
다운로드가 마무리되었을 때 파일의 용량을 확인해서
다운로드가 제대로 되었는지 확인하기 위함입니다.
없어도 동작은 가능합니다.
If http.getResponseHeader("Content-Length") <> "" Then
fileSize = CLng(http.getResponseHeader("Content-Length"))
Else
MsgBox "파일 크기를 확인할 수 없습니다."
Exit Sub
End If
< 파일 다운로드 실행 코드>
actualFileSize = FileLen(zipTempPath)
If actualFileSize = fileSize Then
MsgBox "파일이 성공적으로 다운로드 되었습니다."
Else
MsgBox "파일 다운로드가 완료되지 않았습니다. 크기가 일치하지 않습니다."
End If
다음은 바탕화면에 임의의 폴더를 만드는 코드입니다.
해당 이름의 폴더가 있는지 확인하고 없다면 폴더를 하나 만들어줍니다.
TempPath = Environ("USERPROFILE") & "\Desktop\TempSelenium\"
If Dir(TempPath, vbDirectory) = "" Then
MkDir TempPath
End If
다음은 파일을 다운로드하는 코드입니다.
해당 폴더에 동일 이름의 파일이 있다면 덮어쓰기 합니다.
Set fileStream = CreateObject("ADODB.Stream")
With fileStream
.Open
.Type = adTypeBinary
.Write http.responseBody
.Position = 0
.SaveToFile zipTempPath, adSaveCreateOverWrite
.Close
End With
전체 코드
전체 코드입니다.
Sub Test()
Dim http As Object
Dim TempPath As String
Dim zipTempPath As String
Dim fileSize As Long
Dim actualFileSize As Long
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
Url = "https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.69/win64/chromedriver-win64.zip"
http.Open "GET", Url, False
http.send
If http.Status = 200 Then
If http.getResponseHeader("Content-Length") <> "" Then
fileSize = CLng(http.getResponseHeader("Content-Length"))
Else
MsgBox "파일 크기를 확인할 수 없습니다."
Exit Sub
End If
TempPath = Environ("USERPROFILE") & "\Desktop\TempSelenium\"
If Dir(TempPath, vbDirectory) = "" Then
MkDir TempPath
End If
zipTempPath = TempPath & "chromedriver-win64.zip"
Set fileStream = CreateObject("ADODB.Stream")
With fileStream
.Open
.Type = adTypeBinary
.Write http.responseBody
.Position = 0
.SaveToFile zipTempPath, adSaveCreateOverWrite
.Close
End With
actualFileSize = FileLen(zipTempPath)
If actualFileSize = fileSize Then
MsgBox "파일이 성공적으로 다운로드 되었습니다."
Else
MsgBox "파일 다운로드가 완료되지 않았습니다. 크기가 일치하지 않습니다."
End If
Else
MsgBox "다운로드 실패: HTTP 상태 코드 " & http.Status
End If
End Sub
※ VBA 셀레니움(Selenium) 사용을 위한 크롬 드라이버 자동 설치 : VBA 크롬 드라이버(Chromedriver) 자동설치
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
[ 엑셀 VBA ] VBA 사용자 정의 함수 : 문자열에서 숫자만 추출 (5) | 2024.11.03 |
---|---|
엑셀 VBA 문자열 비교 하는 방법, Like 연산자 사용하기 (1) | 2024.11.03 |
[ 엑셀 VBA ] 내 크롬 브라우저의 버전에 맞는 최신 ChromeDriver 버전 VBA로 확인하기 (2) | 2024.10.28 |
[ 엑셀 VBA ] 크롬 브라우저 버전 정보 확인하기 (0) | 2024.10.28 |
[ 엑셀 VBA ] VBA로 내 컴퓨터에 설치된 ChromeDriver 버전 확인하기 (0) | 2024.10.28 |