在VBS无效的情况下从外部运行Excel宏

在VBS无效的情况下从外部运行Excel宏,excel,vba,vbscript,Excel,Vba,Vbscript,我有一个excel宏,它将某些数据行添加到excel工作簿中的某些工作表中。我遇到的问题是,如果我在工作簿中运行宏,它会像一个符咒一样工作,但是当我尝试在外部运行它时,我就没有那么幸运了 我正在使用下面的VBS代码来运行宏,但由于某些原因,它没有按预期运行。我可以在资源管理器中看到excel文件被打开(在新的修改日期之前),但里面的工作表没有任何更改 Dim WshShell Set WshShell = CreateObject("WScript.Shell") ' Create an Ex

我有一个excel宏,它将某些数据行添加到excel工作簿中的某些工作表中。我遇到的问题是,如果我在工作簿中运行宏,它会像一个符咒一样工作,但是当我尝试在外部运行它时,我就没有那么幸运了

我正在使用下面的VBS代码来运行宏,但由于某些原因,它没有按预期运行。我可以在资源管理器中看到excel文件被打开(在新的修改日期之前),但里面的工作表没有任何更改

Dim WshShell
Set WshShell = CreateObject("WScript.Shell")

' 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

' Tell Excel what the current working directory is 
' (otherwise it can't find the files)
Dim strSaveDefaultPath
Dim strPath
strSaveDefaultPath = myExcelWorker.DefaultFilePath
strPath = WshShell.CurrentDirectory
myExcelWorker.DefaultFilePath = strPath

' Open the Workbook specified on the command-line 
Dim oWorkBook
Dim strWorkerWB
strWorkerWB = strPath & "\WatchlistMentoring.xlsm"

Set oWorkBook = myExcelWorker.Workbooks.Open(strWorkerWB)

' Build the macro name with the full path to the workbook
Dim strMacroName
strMacroName = "'" & strPath & "\WatchlistMentoring.xlsm!UpdateAllspreads()"
on error resume next 
   ' Run the calculation macro
   myExcelWorker.Run strMacroName
   if err.number <> 0 Then
      ' Error occurred - just close it down.
   End If
   err.clear
on error goto 0 

oWorkBook.Save 

myExcelWorker.DefaultFilePath = strSaveDefaultPath

' Clean up and shut down
Set oWorkBook = Nothing

' Don’t Quit() Excel if there are other Excel instances 
' running, Quit() will shut those down also
if myExcelWorker.Workbooks.Count > 0 Then
    myExcelWorker.Quit
    End If

    Set myExcelWorker = Nothing
    Set WshShell = Nothing
Dim WshShell
设置WshShell=CreateObject(“WScript.Shell”)
'创建Excel实例
我的业余爱好者
设置myExcelWorker=CreateObject(“Excel.Application”)
'禁用Excel UI元素
myExcelWorker.DisplayAlerts=False
myExcelWorker.AskToUpdateLinks=False
myExcelWorker.AlertBeforeOverwriting=False
myExcelWorker.FeatureInstall=msoFeatureInstallNone
'告诉Excel当前工作目录是什么
'(否则它找不到文件)
暗strSaveDefaultPath
暗通道
strSaveDefaultPath=myExcelWorker.DefaultFilePath
strPath=WshShell.CurrentDirectory
myExcelWorker.DefaultFilePath=strPath
'打开命令行上指定的工作簿
暗淡的工作手册
Dim STRWORKERB
strWorkerWB=strPath&“\watchlistmutoning.xlsm”
设置oWorkBook=myExcelWorker.Workbooks.Open(strWorkerWB)
'使用工作簿的完整路径生成宏名称
Dim strMacroName
strMacroName=“”&strPath&“\watchlistmentering.xlsm!updatealspreads()”
出错时继续下一步
'运行计算宏
myExcelWorker。运行strMacroName
如果错误号为0,则
'发生错误-请将其关闭。
如果结束
清楚
错误转到0
oWorkBook,保存
myExcelWorker.DefaultFilePath=strSaveDefaultPath
"清理关闭",
设置oWorkBook=Nothing
'如果存在其他Excel实例,则不退出()Excel
'running,Quit()也将关闭这些
如果myExcelWorker.Workbooks.Count>0,则
myExcelWorker,退出
如果结束
设置myExcelWorker=Nothing
设置WshShell=Nothing

显然,文件名和宏名本身是正确的,但不确定我是否同时正确使用它们?

取出“错误时继续下一步”。你有错误吗?哦,是的,我有错误“宏可能不可用!”那么我如何正确引用宏呢?文件名为WatchListMentoning.xlsm,宏名为UpdateAllSpreads(),存储在模块1下(不在工作表下)。如果它所在的工作簿处于打开状态,请从
strMacroName
中删除路径。唯一要验证的另一件事是宏是否在模块内,而不是在工作表或此工作簿中。例如,从该工作簿加载时,目标工作簿会运行一个宏,不能让VBS调用该宏。好的,我现在已经运行了该宏,但它所做的与它应该做的完全不同。也许我尝试物理打开文件,然后运行宏。。。无论如何,谢谢你的帮助!取出错误时的
继续下一步
。你有错误吗?哦,是的,我有错误“宏可能不可用!”那么我如何正确引用宏呢?文件名为WatchListMentoning.xlsm,宏名为UpdateAllSpreads(),存储在模块1下(不在工作表下)。如果它所在的工作簿处于打开状态,请从
strMacroName
中删除路径。唯一要验证的另一件事是宏是否在模块内,而不是在工作表或此工作簿中。例如,从该工作簿加载时,目标工作簿会运行一个宏,不能让VBS调用该宏。好的,我现在已经运行了该宏,但它所做的与它应该做的完全不同。也许我尝试物理打开文件,然后运行宏。。。无论如何,谢谢你的帮助!