Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何成功执行vbscript?_Excel_Vba_Vbscript - Fatal编程技术网

Excel 如何成功执行vbscript?

Excel 如何成功执行vbscript?,excel,vba,vbscript,Excel,Vba,Vbscript,我有一个包含宏的excel文件。宏写在“开发人员”选项卡的此工作簿中。我想通过在windows任务调度程序中调度宏来自动运行宏 我做了一些研究,发现我必须为此编写一个vbscript,然后运行vb脚本才能运行宏 这是vb脚本。vbscript应: 打开excel文件 运行宏 关闭excel文件 这应该在计划的时间自动完成,每天使用windows任务计划程序 到目前为止,这是vb脚本: 'Script to start my filter.xls program with named macro

我有一个包含宏的excel文件。宏写在“开发人员”选项卡的此工作簿中。我想通过在windows任务调度程序中调度宏来自动运行宏

我做了一些研究,发现我必须为此编写一个vbscript,然后运行vb脚本才能运行宏

这是vb脚本。vbscript应:

  • 打开excel文件
  • 运行宏
  • 关闭excel文件
  • 这应该在计划的时间自动完成,每天使用windows任务计划程序

    到目前为止,这是vb脚本:

    'Script to start my filter.xls program with named macro
    'MsgBox "In RunExcel"
    
    ' Create an Excel instance
    Dim myExcelWorker
    Set myExcelWorker = CreateObject("Excel.Application") 
    
    ' Disable Excel UI elements
    myExcelWorker.DisplayAlerts = False
    myExcelWorker.AskToUpdateLinks = False
    myExcelWorker.AlertBeforeOverwriting = False
    myExcelWorker.FeatureInstall = msoFeatureInstallNone
    
    ' Open the Workbook 
    Dim oWorkBook
    Dim strWorkerWB
    strWorkerWB = "C:\Users\Desktop\service calibration details\CC.xlsm"
    
    'MsgBox "Opening filter"
    
    on error resume next 
    Set oWorkBook = myExcelWorker.Workbooks.Open(strWorkerWB)
    if err.number <> 0 Then
        ' Error occurred - just close it down.
        MsgBox "open Error occurred"
    End If
    err.clear
    on error goto 0 
    
    'MsgBox "Running macro"
    
    Dim strMacroName
    strMacroName = "CCA"
    on error resume next 
    ' Run the macro
    myExcelWorker.Run strMacroName
    if err.number <> 0 Then
        ' Error occurred - just close it down.
        MsgBox "run macro Error occurred"
    End If
    err.clear
    on error goto 0 
    
    ' Clean up and shut down
    Set oWorkBook = Nothing
    myExcelWorker.Quit
    Set myExcelWorker = Nothing
    Set WshShell = Nothing
    
    使用命名宏启动my filter.xls程序的脚本 RunExcel中的“MsgBox” '创建Excel实例 我的业余爱好者 设置myExcelWorker=CreateObject(“Excel.Application”) '禁用Excel UI元素 myExcelWorker.DisplayAlerts=False myExcelWorker.AskToUpdateLinks=False myExcelWorker.AlertBeforeOverwriting=False myExcelWorker.FeatureInstall=msoFeatureInstallNone '打开工作簿 暗淡的工作手册 Dim STRWORKERB strWorkerWB=“C:\Users\Desktop\service calibration details\CC.xlsm” “MsgBox”打开过滤器 出错时继续下一步 设置oWorkBook=myExcelWorker.Workbooks.Open(strWorkerWB) 如果错误号为0,则 '发生错误-请将其关闭。 MsgBox“发生打开错误” 如果结束 清楚 错误转到0 “MsgBox”正在运行宏 Dim strMacroName strMacroName=“CCA” 出错时继续下一步 '运行宏 myExcelWorker。运行strMacroName 如果错误号为0,则 '发生错误-请将其关闭。 MsgBox“发生运行宏错误” 如果结束 清楚 错误转到0 "清理关闭", 设置oWorkBook=Nothing myExcelWorker,退出 设置myExcelWorker=Nothing 设置WshShell=Nothing 我尝试使用基于microsoft windows的脚本主机运行此操作。但我得到错误“运行宏错误发生”

    我在网上搜索。然而,我找不到解决这个问题的办法

    是什么导致了这个问题

    我编写的vbscript中是否有错误?


    如何成功执行此操作?

    作为解决此问题的另一种方法,您可以使用一个简单的VB脚本文件来打开电子表格。大概是这样的:

    Set xl = CreateObject("Excel.application")
    
    xl.Application.Workbooks.Open "C:\Users\Desktop\service calibration details\CC.xlsm"
    xl.Application.Visible = True
    
    Set xl = Nothing
    
    然后将excel宏放入工作簿的“打开”子部分,以便在打开工作簿时执行。在宏的末尾添加以下行:

    ActiveWorkbook.Close False 'false prevents it from saving any changes
    Application.Quit
    
    或者如果你想省钱

    ActiveWorkbook.Save
    Application.Quit
    

    希望这能达到目的!祝您好运。

    “出错”消息没有诊断价值。添加
    &“0x”&Hex(错误编号)&“&CStr(错误编号)&”&Err.Description
    ,然后您可以获得更多信息来查找罪犯。提示:
    Run
    方法启动在新Windows进程中运行的程序…@JosefZ我应该将其添加到哪里?
    MsgBox“bla-bla-Error-accurrent”&“0x”&Hex(Err.Number)&“&CStr(Err.Number)&”&Err.Description
    。对于所有
    bla-bla
    :运行宏,打开,…@JosefZ您可以在代码中编辑它吗?