从另一个工作簿运行Excelmacros

我有一个服务器上的macros。 我需要能够从连接到此服务器的不同工作站运行它。

目前我在做:

Application.Run ("L:\database\lcmsmacro\macro1.xlsm!macro_name") 

我得到的错误消息是“macros可能不在此工作簿#1004中可用”

我已经确保我的安全设置设置在最低级别。

如何从另一台服务器上托pipe的其他工作簿运行macros?

会使用加载项帮助我?

我认为你的语法缺less单引号字符:

 Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name") 

然后,如果你需要传递参数,它的语法是这样的:

 Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name","param1","param2") 

如果远程工作簿中有重复的macros名称,例如两个名为“macro_name”的macros,也会出现此错误。 花了我一会儿才知道!

通常在名称中,如果在名称中有空格或标点符号,则必须使用单个“',这样Excel就不会觉得该空间是故意的分隔,例如将参数与方法分开。 在某些情况下,Excel会坚持使用它们。 通常包含它们是没有害处的,即使它们不是必需的,例如当名字中不存在空格时。 如果不需要的话,Excel有时会把它们取出来。 http://www.eileenslounge.com/viewtopic.php?f=27&t=25599

如果您需要使用工作簿path从macros中运行macros,并且需要从数组列表中运行多个macros,则需要findmacros的相对macrospath,以下代码将有助于:

 Dim relativePath As String, programFileName As String Dim selectedProgramsFiles() As String, programsArrayLastIndex As Byte, I As Byte For I = 0 To programsArrayLastIndex 'Loop through all selected programs programFileName = selectedProgramsFiles(I) relativePath = ThisWorkbook.Path & "\" & programFileName Workbooks.Open Filename:=relativePath Application.Run ("'" & relativePath & "'!ModuleName.Main") Workbooks(programFileName).Activate ActiveWorkbook.Close SaveChanges:=False Next I 'For I = 0 To programsArrayLastIndex 'Loop through all selected program