从另一个工作簿运行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