繁体   English   中英

使用任务计划程序在 Excel 中运行 selenium v​​ba 宏时,如何修复“运行时错误 429:ActiveX 组件无法创建对象”错误?

[英]How to fix "Run time error 429: ActiveX Component Can't Create Object" Error when using Task Scheduler to run a selenium vba macro in Excel?

我在 Excel 中有一个宏,它使用 Selenium 基本类型库打开 Chrome 并在 Chrome 浏览器中自动执行一些 Web 任务。 我设置了一个 VBS 来运行宏,当我双击 VBS 时,它可以手动顺利运行。

这是流程:
Task Scheduler -> RunMacroUploadAsia.vbs 在 WeeklyUpload.xlsm 中启动 WeekendNoRunAsia 宏 -> 完成 WeekendNoRunAsia 宏并启动 UploadPostAsia 宏以打开 Chrome 浏览器执行一些网络任务。

当我使用 Windows 任务计划程序运行 VBS 脚本以按计划运行 Excel 宏时,

“运行时错误 429,ActiveX 组件无法创建对象”

Excel 窗口中出现错误。 当我调试宏时,它会卡在 UploadPostAsia 宏中的这行代码中:

Set D = New ChromeDriver

为什么 VBS 手动运行良好,而不是在任务计划程序上运行?

这是我的情况的设置。 VBA 是用 Excel 2007 编写的,我安装了 Selenium 类型库(SeleniumBasic v2.0.9.0)。 我的笔记本电脑在 Windows 7 Home Basic 64 位和我的 Chrome 浏览器 v71.0.3578.98 上运行。

  1. 在任务计划程序下的操作选项卡中,我有以下内容:
    "C:\\Users\\SKhany\\Google Drive\\myexample\\mystuff tasks\\RunMacroUploadAsia.vbs"

  2. 这是 RunMacroUploadAsia.vbs 脚本:

     Option Explicit On Error Resume Next ExcelMacroExample Sub ExcelMacroExample() Dim xlApp Dim xlBook Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlBook = xlApp.Workbooks.Open("C:\\Users\\SKhany\\Google Drive\\myexample\\mystuff tasks\\WeekdayUpload.xlsm", 0, True) xlApp.Run "WeekendNoRunAsia" xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing End Sub
  3. 然后宏 WeekendNoRunAsia 将通过 UploadPostAsia 运行(代码如下),然后任务计划程序将停留在

    Set D = New ChromeDriver

如果我不使用 Task Scheduler 并且我尝试将代码更改为Set D = New Selenium.Chromedriver并且仍然出现相同的错误,则工作流程会起作用。 我需要在每个工作日运行此工作流,并且真的很想用 Task Scheduler 解决这个问题,或者如果有任何其他方式来安排 VBS 是受欢迎的。 感谢您对此的任何帮助。

Public Sub UploadPostAsia()
    Dim ws As Worksheet
    Dim D As WebDriver
    Dim i As Integer

    Set ws = ThisWorkbook.Worksheets("Data")
    Set D = New ChromeDriver
    Const URL = "https://www.myexample.com/login/"

    'To login to website

    With D
        .Start "Chrome"
        .Window.Maximize
        .Get URL
        .FindElementById("user_login").SendKeys(ws.Cells(2, 1)).Click
        .FindElementById("user_pass").SendKeys(ws.Cells(2, 2)).Click
        .FindElementByName("submit").Click
    End With

   'Perform some web tasks
End Sub

我知道这个线程很旧,但我想我会添加一个关于我发现的评论。 我正在运行一个由于某种原因停止工作并产生此错误的任务。 在感到非常沮丧并玩了一段时间之后,我意识到我已经勾选了“以最高权限运行”。 一旦我取消勾选它,它又开始正常工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM