【问题标题】: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 v​​ba 宏时,如何修复“运行时错误 429:ActiveX 组件无法创建对象”错误?
【发布时间】:2019-01-10 15:32:33
【问题描述】:

我在 Excel 中有一个宏,它使用 Selenium 基本类型库来打开 chrome 并在 Chrome 浏览器中自动执行一些网络任务。我设置了一个 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
    

如果我不使用任务计划程序并且我尝试将代码更改为 Set D = New Selenium.Chromedriver 并且仍然有相同的错误,则工作流程可以工作。我需要在每个工作日运行这个工作流,并且真的很想解决任务计划程序的问题,或者如果有任何其他方式来安排 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

【问题讨论】:

  • 这是否类似于:stackoverflow.com/questions/26420003/…?您必须非常小心斜线和引号,并将参数放在正确的位置。
  • 感谢您的输入,我不确定要修改哪些参数,但我在任务计划程序中使用这些参数进行了测试:启动程序:C:\Windows\System32\wscript.exe 参数:c :\mypath\RunMacroUploadAsia.vbs 从:C:\Windows\System32 启动并运行它,它会无限期地运行......我这样做对吗?

标签: excel vba selenium-webdriver vbscript taskscheduler


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 2011-02-08
    • 2015-04-24
    • 2016-04-24
    • 2013-06-24
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多