VBA透過IE爬蟲使用ExcelWB複製貼上錯訊「x80040100 存取被拒」
問題描述
這是一個爬蟲程式,開啟的網頁是一個表格,透過ExcelWB提供的API功能select all與copy,再貼到Excel的Sheet上。
不過有的時候會發生在程式碼21行的地方出現「x80040100 存取被拒」的訊息。
解決
原因
從官方的文件的錯誤訊息看來「Trying to revoke a drop target that has not been registered」,研判是VBA在呼叫
兩個IE的API間有著未被撤銷的物件導致在copy網頁時發生問題。猜測由VBA呼叫這兩個API時為獨立的,所以可能因為select all尚未執行完,
而又要執行copy的動作時拋出異常
處理
程式第41行透過VBA提供的Application.Wait API等待5秒鐘,再執行就沒有問題了
程式
1 | Sub test() |
reference
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment