項目使用了 codeproject 網站提供的第三方擴展 : clsBrowser.cls , clsCore.cls , clsJsConverter.cls 三個類模組.
第三方擴展類模組提供網站 codeproject 裏的 Automate Chrome or Edge using VBA 庫 ( Tips ) 官方説明頁: https://www.codeproject.com/Tips/5307593/Automate-Chrome-Edge-using-VBA
一. 確保 Microsoft Window10 系統的 Edge 瀏覽器已全部關閉, 啓動 Microsoft Office Excel 應用.
二. 手動操作 Microsoft Excel 應用, 載入文件夾 ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/ 裏的 Microsoft Excel VBA 類模組 ( Class Modul ) : clsBrowser.cls , clsCore.cls , clsJsConverter.cls
三. 手動操作 Microsoft Excel 應用, 載入文件夾 ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/ 裏的 Microsoft Excel VBA 窗體 ( Form ) : CrawlerControlPanel.frm , CrawlerControlPanel.frx
四. 手動操作 Microsoft Excel 應用, 載入文件夾 ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/ 裏的 Microsoft Excel VBA 模組 ( Module ) : CrawlerDispatchModule.bas
五. 手動操作 Microsoft Excel 應用, 載入文件夾 ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/ 裏的 Microsoft Excel VBA 模組 ( Module ) : testCrawlerModule.bas
六. 手動操作 Microsoft Excel 應用, 載入文件夾 ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/ 裏的 Microsoft Excel VBA 對象 ( Object ) : ThisWorkbook.cls
七. 啓動運行測試網站 : root@localhost:~# /bin/node ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/testWeb/server.js
八. 運行 Microsoft Excel VBA 宏擴展應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 選擇 test 選項, 從 Microsoft Excel 應用的「加載項」菜單裏, 選擇 : 「 Focused Crawling 」 → 「 operation panel 」 → 「 test 」, 加載顯示 test 人機交互介面.
九. 測試 Microsoft Excel VBA 宏擴展應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 操控讀取測試網站 testWeb 頁面顯示的資訊, 將讀取結果存儲在電子表格 ( Microsoft Excel ) 指定位置.
項目空間裏的電子表格 Microsoft Excel 檔 : 「 Crawler.xlsm 」 已經載入 :
第三方類模組 ( Class Modul ) : clsBrowser.cls , clsCore.cls , clsJsConverter.cls
窗體 ( Form ) : CrawlerControlPanel.frm , CrawlerControlPanel.frx
模組 ( Module ) : CrawlerDispatchModule.bas , testCrawlerModule.bas
對象 ( Object ) : ThisWorkbook.cls
可直接從 Microsoft Excel 應用的「加載項」菜單裏, 選擇 : 「 Focused Crawling 」 → 「 operation panel 」 → 「 test 」, 加載顯示 test 人機交互介面.
祇需啓動運行測試網站 : root@localhost:~# /bin/node ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/testWeb/server.js
之後即可測試 Microsoft Excel VBA 宏擴展應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 操控讀取測試網站 testWeb 頁面顯示的資訊, 將讀取結果存儲在電子表格 ( Microsoft Excel ) 指定位置.
使用微軟電子表格 Microsoft Excel VBA 驅動瀏覽器 Microsoft Edge 宏應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 説明 :
-
項目架構執行序 :
1). 啓動 Microsoft Office Excel Professional 2019 應用, 電子表格 Excel 應用會自動運行已載入的模組 ( Module ) 和類模組 ( Class Modul ), 其中載入的調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ) 裏的自定義過程 ( Subroutine ) : MenuSetup() 會修改電子表格 Excel 的菜單欄 ( Menu Bar ) 向「 加載項 ( add-in ) 」菜單下寫入自定義的 Microsoft Excel VBA 宏擴展應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 標簽.
2). 單擊電子表格 Excel 「 加載項 ( add-in ) 」菜單 ( Menu ) 下 Microsoft Excel VBA 宏擴展應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 標簽, 首先執行的是調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ).
3). 調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ) 調用操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ), 並讀取操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 裏的自定義配置參數值.
4). 同時, 調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ) 調用窗體 ( Form ) 對象 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ), 並根據操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 裏的自定義配置參數值, 爲窗體 ( Form ) 介面 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 賦初值, 窗體 ( Form ) 對象 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 是人機交互介面.
5). 手動操控窗體 ( Form ) 介面使用瀏覽器 Microsoft Edge 打開待讀取資訊的目標網站頁面 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/testWeb/ ).
6). 首先, 窗體 ( Form ) 對象 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 調用操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ).
7). 然後, 操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 引用第三方類模組 ( Class Modul ) : ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsBrowser.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsCore.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsJsConverter.cls ).
8). 最後, 第三方類模組 ( Class Modul ) : ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsBrowser.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsCore.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsJsConverter.cls ) 會驅動瀏覽器 Microsoft Edge 加載打開目標網站頁面 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/testWeb/ ).
9). 手動操控窗體 ( Form ) 介面, 啓動循環操控瀏覽器 Microsoft Edge 並讀取載入的目標網站頁面 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/testWeb/ ) 裏顯示的資訊.
10). 首先, 窗體 ( Form ) 對象 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 調用操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ).
11). 然後, 操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 引用第三方類模組 ( Class Modul ) : ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsBrowser.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsCore.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsJsConverter.cls ).
12). 然後, 第三方類模組 ( Class Modul ) : ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsBrowser.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsCore.cls ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CDPimport/clsJsConverter.cls ) 會驅動瀏覽器 Microsoft Edge 翻頁, 並讀取載入的目標網站頁面 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/testWeb/ ) 顯示的資訊.
13). 然後, 操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 將讀取到的資訊, 回饋至窗體 ( Form ) 介面 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 動態提示運行狀態.
14). 同時, 操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 讀取窗體 ( Form ) 介面 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 裏自定義的保存位置參數值.
15). 最後, 操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 根據自定義的保存位置參數值, 將讀取到的資訊, 寫入電子表格 Excel 指定的位置存儲.
-
項目將自定義的操作模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 作爲獨立的一個模組 ( Module ) 設計, 目的是, 與調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ) 分開, 解耦合, 這樣便於日後維護擴展功能, 增加更多元的操控介面, 使之可選擇的, 適用於讀取更多目標網站頁面裏顯示的資訊.
同樣的, 項目將調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ) 作爲獨立的一個模組 ( Module ) 設計, 與窗體 ( Form ) 對象 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 分開, 其目的也是爲了, 解耦合, 便於日後維護擴展功能, 增加更多元的操控介面, 使之可選擇的, 適用於讀取更多目標網站頁面裏顯示的資訊.
若不考慮日後的功能擴展, 可取消獨立的調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ) 設計, 將之全部功能, 整合入窗體 ( Form ) 對象 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 裏, 這樣可降低項目架構的複雜性, 更易於理解.
-
若想擴展功能, 增加更多元的操控介面, 使之可選擇的, 適用於讀取更多目標網站頁面, 可新增複製 test/ 文件夾並重新命名, 保存路徑位於 ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/ 文件夾裏, 重新命名並自定義修改文件夾 test/ 裏的模組 ( Module ) : testCrawlerModule.bas , 根據需要自定義修改設計編寫代碼脚本即可, 這一操作的目的, 是爲實現新增一組操作介面的效果, 例如像 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 類似的.
并且, 需要修改調度模組 ( Module ) ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerDispatchModule.bas ) 裏的代碼, 使其可以正確找到調用自定義擴展新增的操作模組 ( Module ) 並正確的讀取適配合規的自定義擴展新增的配置參數初值, 例如像 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 類似的.
并且, 需要修改窗體 ( Form ) 對象 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frx ) , ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerControlPanel.frm ) 裏的代碼, 使其可以正確適配合規的顯示自定義擴展新增的模組 ( Module )的配置參數值, 作爲人機交互介面, 可以正確的操控自定義擴展新增的模組 ( Module ) 引用第三方類模組 ( Class Modul ) : clsBrowser.cls , clsCore.cls , clsJsConverter.cls 驅動 Microsoft Edge 瀏覽器, 例如像 ( ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/CrawlerStrategyServer/test/testCrawlerModule.bas ) 類似的.
-
項目空間裏的文件夾 testWeb 祇是一組用於配合測試電子表格 Microsoft Excel VBA 驅動瀏覽器 Microsoft Edge 宏應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 框架基礎功能的網站頁面, 主要用於開發階段的測試之用, 當 focused-crawling-Microsoft-Office-Excel-VBA-Edge 的策略介面選擇 test 選項加載顯示 test 人機交互介面時, 才需要啓動運行 testWeb 伺服器, 定型之後生產階段則不再需要; 若不需要測試框架基礎功能, 可將文件夾 testWeb 刪除, 不會影響 電子表格 Microsoft Excel VBA 驅動瀏覽器 Microsoft Edge 宏應用 : focused-crawling-Microsoft-Office-Excel-VBA-Edge 的功能.
伺服器 testWeb 運行需要 Node.js 環境, 所以運行之前, 需對作業系統 ( Operating System ) 安裝配置 Node.js 環境成功方可.
可在 Linux-Ubuntu 系統的控制臺命令列人機交互介面窗口 ( Ubuntu-bash ) 使用如下指令, 安裝配置 Node.js 環境 :
root@localhost:~# sudo apt install nodejs
root@localhost:~# sudo apt install npm
可在 Linux-Ubuntu 系統的控制臺命令列人機交互介面窗口 ( Ubuntu-bash ) 使用如下指令, 啓動運行 testWeb 伺服器 :
root@localhost:~# /bin/node ./focused-crawling-Microsoft-Office-Excel-VBA-Edge/testWeb/server.js
Operating System :
Acer-NEO-2023 Windows10 x86_64 Inter(R)-Core(TM)-m3-6Y30
Application :
Microsoft Office Excel Professional 2019 x86_64
Browser :
Microsoft Internet Explorer ( Trident ) x86_64 version 11
Microsoft Edge ( Chromium - Blink ) x86_64 version 126.0.2592.102
Google Chrome ( Chromium - Blink ) x86_64 version 126.0.6478.127
Mozilla Firefox ( Gecko ) x86_64 version 128.0 2024/07/09
Interpreter :
Node.js - version 20.15.0
npm - version 10.7.0
Application : Microsoft Office Excel Professional 2019
作業系統 ( Operating system ) 之 Microsoft Windows 官方網站: https://www.microsoft.com/zh-tw/windows
電子表格應用 Microsoft Office Excel 官方下載頁: https://www.microsoft.com/zh-tw/download/office
電子表格應用 Microsoft Office Excel 2019 官方説明頁: https://learn.microsoft.com/zh-tw/deployoffice/office2019/overview
使用 Microsoft Office Excel VBA 操作 Edge、Chrome、Firebox 瀏覽器, 使用 codeproject 網站提供的第三方擴展類模組 : clsBrowser.cls , clsCore.cls , clsJsConverter.cls 官方網站 :
第三方擴展類模組 VBA-JSON 官方 GitHub 網站倉庫: https://github.com/VBA-tools/VBA-JSON.git
第三方擴展類模組提供網站 codeproject 裏的 Automate Chrome or Edge using VBA 庫 ( Tips ) 官方説明頁: https://www.codeproject.com/Tips/5307593/Automate-Chrome-Edge-using-VBA
第三方擴展類模組 Chromium-Automation-with-CDP-for-VBA 官方 GitHub 網站倉庫: https://github.com/longvh211/Chromium-Automation-with-CDP-for-VBA.git
第三方擴展類模組 Edge-IE-Mode-Automation-with-IES-for-VBA 官方 GitHub 網站倉庫: https://github.com/longvh211/Edge-IE-Mode-Automation-with-IES-for-VBA.git
Browser : Microsoft Internet Explorer ( Trident )
瀏覽器 ( Browser ) 之 Microsoft Internet Explorer 下載官方網站: https://www.microsoft.com/en-za/download/internet-explorer.aspx
Browser : Microsoft Edge ( Chromium - Blink )
瀏覽器 ( Browser ) 之 Microsoft Edge 官方 GitHub 網站賬戶: https://github.com/MicrosoftEdge/
瀏覽器 ( Browser ) 之 Microsoft Edge 官方手冊 GitHub 網站倉庫: https://github.com/MicrosoftEdge/MSEdgeExplainers.git
瀏覽器 ( Browser ) 之 Microsoft Edge 下載官方網站: https://www.microsoft.com/zh-tw/edge/download?form=MA13FJ
瀏覽器 ( Browser ) 之 Microsoft Edge 驅動 ( Driver ) 下載官方網站: https://developer.microsoft.com/zh-tw/microsoft-edge/tools/webdriver/?form=MA13LH
Browser : Google Chrome ( Chromium - Blink )
瀏覽器 ( Browser ) 之 Google Chrome 官方 GitHub 網站賬戶: https://github.com/GoogleChrome
瀏覽器 ( Browser ) 之 Google Chrome 擴展插件 (Extensions) 開發官方示例 GitHub 網站倉庫: https://github.com/GoogleChrome/chrome-extensions-samples.git
瀏覽器 ( Browser ) 之 Google Chrome 下載官方網站: https://www.google.com/intl/zh-TW/chrome/dev/?standalone=1
瀏覽器 ( Browser ) 之 Google Chrome ( Chromium ) 開發人員版 ( dev ) 下載中文網站: https://www.google.cn/intl/zh-TW/chrome/dev/?standalone=1&system=true&statcb=1&installdataindex=empty&defaultbrowser=0
瀏覽器 ( Browser ) 之 Google Chrome 驅動 ( Driver ) 下載官方網站: https://chromedriver.storage.googleapis.com/index.html
瀏覽器 ( Browser ) 之 Google Chrome 驅動 ( Driver ) 下載官方網站淘寶網鏡像源: https://npm.taobao.org/mirrors/chromedriver
Browser : Mozilla Firefox ( Gecko )
瀏覽器 ( Browser ) 之 Mozilla Firefox 官方 GitHub 網站賬戶: https://github.com/mozilla
瀏覽器 ( Browser ) 之 Mozilla Firefox 官方 GitHub 網站倉庫: https://github.com/mozilla/gecko-dev.git
瀏覽器 ( Browser ) 之 Mozilla Firefox 下載官方網站: https://www.mozilla.org/zh-TW/firefox/
瀏覽器 ( Browser ) 之 Mozilla Firefox 驅動 ( Driver ) 官方 GitHub 網站倉庫: https://github.com/mozilla/geckodriver.git
瀏覽器 ( Browser ) 之 Mozilla Firefox 驅動 ( Driver ) 預編譯二進位檔官方 GitHub 網站倉庫: https://github.com/mozilla/geckodriver/releases
瀏覽器 ( Browser ) 之 Mozilla Firefox 驅動 ( Driver ) 官方説明頁: https://firefox-source-docs.mozilla.org/testing/geckodriver/
Interpreter : Node.js
程式設計 JavaScript 語言解釋器 ( Interpreter ) 之 Node.js 官方網站: https://node.js.org/
程式設計 JavaScript 語言解釋器 ( Interpreter ) 之 Node.js 官方網站: https://nodejs.org/en/
程式設計 JavaScript 語言解釋器 ( Interpreter ) 之 Node.js 官方下載頁: https://nodejs.org/en/download/package-manager
程式設計 JavaScript 語言解釋器 ( Interpreter ) 之 Node.js 官方 GitHub 網站賬戶: https://github.com/nodejs
程式設計 JavaScript 語言解釋器 ( Interpreter ) 之 Node.js 官方 GitHub 網站倉庫: https://github.com/nodejs/node.git
瀏覽器 ( Browser : Microsoft Internet Explorer , Microsoft Edge , Google Chrome , Mozilla Firefox ) 和解釋器 ( Interpreter : Node.js ) 預編譯二進制可執行檔 百度網盤(pan.baidu.com) 下載頁: https://pan.baidu.com/s/1IXjbZBRkurrNRs0GoURCaA?pwd=1dm7
提取碼:1dm7