【发布时间】: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 上运行。
在“操作”选项卡下的“任务计划程序”中,我有以下内容:
"C:\Users\SKhany\Google Drive\myexample\mystuff tasks\RunMacroUploadAsia.vbs"-
这是 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 -
然后宏 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