返回列表 上一主題 發帖

[發問] 如何用EXCEL VBA在CHROME輸入資料再按下查詢?

本帖最後由 singo1232001 於 2022-7-9 16:40 編輯

回復 1# smart3135


https://github.com/florentbr/SeleniumBasic/releases
下載
SeleniumBasic-2.0.9.0.exe

更新chrome版本
chrome>說明>關於google chrome

手動第一次更新chromedriver版本
https://chromedriver.chromium.org/
位置C:\Users\xxx\AppData\Local\SeleniumBasic\

安裝並更新後 第一次測試
開始>selenium Basic>Start Chome>跳錯>自動安裝.net fromework>重開機

第二次測試
開始>selenium Basic>Start Chome>click ok to quit




後期引用寫法(避免換電腦還要重設)
set driver = CreateObject("Selenium.ChromeDriver")

操作學習參考網址
https://club.excelhome.net/thread-1452021-1-1.html









自動更新chromedriver  vba代碼(通常一個月左右google會更新瀏覽器一次)
Sub seleniumOPEN()

'利用error方式判斷selenium是否異常 若有異常err就不是0  就會進入 updataSelenium 的程序抓取新的chromedrive版本
Do
    On Error GoTo 0
    On Error Resume Next
    Set driver = CreateObject("Selenium.ChromeDriver")
    Err = 0
    driver.Get "https://www.google.com.tw"   '一定要加https:// 不然會出現神奇的異常現象
    If Err <> 0 Then
            driver.Quit
            Set driver = Nothing
            Call updataSelenium
    End If
Loop Until Err = 0

msgbox "完成"
End Sub


Sub updataSelenium()
'先判斷chromedriver在哪個資料夾
path1 = "C:\Users\" & Environ$("username") & "\AppData\Local\SeleniumBasic\Chromedriver.exe"
path2 = "C:\Program Files\SeleniumBasic\Chromedriver.exe"
If Dir(path1) <> "" Then TempDrvFile = path1
    'Kill (TempDrvFile)  '假如在錯誤的情況下 找到了檔案 那之後將要更新複製覆蓋 避免跳出複製已存在錯誤警告 所以先刪除掉
If Dir(path2) <> "" Then TempDrvFile = path2

'判斷chrome的版本號
Set objHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")  'Get chrome version
chrversion = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon\version")
dotsarr = Split(chrversion, ".")
leftchrver = dotsarr(0) & dotsarr(1)

'判斷chromedriver版本號
Set oShell = CreateObject("wscript.shell")
errcode = oShell.Exec(path1 & " --version").StdOut.ReadAll
verarr = Split(errcode, " ")
chrdrv = verarr(1)
dotsarr2 = Split(chrdrv, ".")
leftchrdrv = dotsarr2(0) & dotsarr2(1)
If leftchrver = leftchrdrv Then Exit Sub '利用版本號的前兩位判斷是否同版本


'利用版本號第一位 上官網查詢 當前版本的最終版本號
URL = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_" & dotsarr(0)
Call objHttp.Open("GET", URL, False)
Call objHttp.Send("")
version_number = objHttp.responseText
dotsarr3 = Split(version_number, ".")
leftversion_no = dotsarr3(0) & dotsarr3(1)
download_url = "https://chromedriver.storage.googleapis.com/" + version_number + "/chromedriver_win32.zip"
   
    '利用取得的版本號 取得下載網址 並開啟chromedriver.zip下載頁面
    Call objHttp.Open("GET", download_url, False)
    Call objHttp.Send("")
        
        '開啟adodb接收下載壓縮檔 並放入selenium的資料夾
        Set fileStream = CreateObject("ADODB.Stream")
        With fileStream
            .Open
            .Type = 1 'adTypeBinary
            .Write objHttp.responseBody
            .Position = 0
            .SaveToFile "C:\Users\" & Environ$("username") & "\AppData\Local\SeleniumBasic\chromedriver.zip", 2  'adSaveCreateOverWrite 'adSaveCreateOverWrite
            .Close
        End With
        
        '解壓縮 會先將舊版的刪除 才解壓縮
        Set oApp = CreateObject("Shell.Application")
        If Dir(path1) <> "" Then Kill path1
        oApp.Namespace("C:\Users\" & Environ$("username") & "\AppData\Local\SeleniumBasic\").CopyHere _
            oApp.Namespace("C:\Users\" & Environ$("username") & "\AppData\Local\SeleniumBasic\chromedriver.zip").Items


'全部完成後 會回到上一個sub 並重新判斷是否版本錯誤
End Sub

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題