Vba 从VBS文件运行宏时出错

Vba 从VBS文件运行宏时出错,vba,excel,vbscript,wsh,Vba,Excel,Vbscript,Wsh,我正在使用vbs代码自动打开并运行Excel宏,但收到以下错误消息: 错误:无法运行宏“文件位置”。该宏可能在此工作簿中不可用,或者可能已禁用所有宏。 代码:800A03EC 资料来源:Microsoft Excel VBS代码: Dim ObjExcel, ObjWB Set ObjExcel = CreateObject("Excel.Application") ObjExcel.Visible = True Set ObjWB = ObjExcel.Application.Run("C

我正在使用vbs代码自动打开并运行Excel宏,但收到以下错误消息:

错误:无法运行宏“文件位置”。该宏可能在此工作簿中不可用,或者可能已禁用所有宏。 代码:800A03EC 资料来源:Microsoft Excel

VBS代码:

Dim ObjExcel, ObjWB
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True


Set ObjWB = ObjExcel.Application.Run("C:\Automation\TestCasesBackupScript.xlsm!Backup3")


ObjWB.Close False
ObjExcel.Quit
Set ObjExcel = Nothing
宏已启用,“Backup3”是TestCasesBackupScript.xlsm文件模块中的子名称

希望得到反馈


谢谢。

您在
应用程序.Run中引用的工作簿必须在
应用程序
对象的上下文中打开。只需先打开它,然后调用它:

Dim ObjExcel, ObjWB
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True

Set ObjWB = ObjExcel.Workbooks.Open("C:\Automation\TestCasesBackupScript.xlsm")
ObjWB.Application.Run("Backup3")

ObjWB.Close False
ObjExcel.Quit
Set ObjExcel = Nothing

注意:如果
Backup3
实际返回工作簿对象(这是使用语法
Set ObjWB=ObjExcel.Application.Run
的唯一原因,您需要在其自身变量中捕获该引用。

您在
应用程序中引用的工作簿。Run
必须在
应用程序
对象的上下文中打开。只需先打开它,然后调用它:

Dim ObjExcel, ObjWB
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True

Set ObjWB = ObjExcel.Workbooks.Open("C:\Automation\TestCasesBackupScript.xlsm")
ObjWB.Application.Run("Backup3")

ObjWB.Close False
ObjExcel.Quit
Set ObjExcel = Nothing

注意:如果
Backup3
实际返回工作簿对象(这是使用语法
Set ObjWB=ObjExcel.Application.Run
的唯一原因),您将希望在其自身变量中捕获该引用。

感谢您的反馈。更改代码后,我收到以下错误:“无法运行宏‘Backup3’。该宏可能在此工作簿中不可用,或者可能已禁用所有宏。代码:800A03EC。源代码:Microsoft Excel。”此行出错:ObjWB.Application.run(“Backup3”)。在我将宏从模块移动到Microsoft Excel对象-->Sheet1(Sheet1)后,该宏工作正常。”。将之前出现错误的行更改为:ObjWB.Application.Run(“Sheet1.Backup3”)-感谢您的反馈,它帮助我找到了正确的位置。感谢您的反馈。更改代码后,我出现以下错误:无法运行宏“Backup3”。该宏可能在此工作簿中不可用,或者可能已禁用所有宏。代码:800A03EC。来源:Microsoft Excel。此行出错:ObjWB.Application.run(“Backup3”)。在我将宏从模块移动到Microsoft Excel对象-->Sheet1(Sheet1)后,该宏正常工作。将之前出现错误的行更改为:ObjWB.Application.Run(“Sheet1.Backup3”)-感谢您的反馈,它帮助我找到了正确的位置。