我有一个服务器上的宏。我需要能够从连接到此服务器的不同工作站运行它。
目前我在做:
Application.Run ("L:\database\lcmsmacro\macro1.xlsm!macro_name")
我收到的错误消息是“此工作簿中可能没有宏#1004”
我已经确定我的安全设置设置在最低级别。
如何从托管在其他服务器上的其他工作簿运行宏?
会使用加载项帮助我吗?
答案 0 :(得分:17)
我认为你的语法缺少单引号字符:
Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name")
然后,如果您需要将参数传递给它,语法将如下所示:
Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name","param1","param2")
答案 1 :(得分:1)
当远程工作簿中存在重复的宏名称时,也会显示此错误,例如两个名为" macro_name"的宏。花了一段时间才发现!
答案 2 :(得分:0)
通常在名称中,如果名称中有空格或标点符号,则需要单个',以便Excel不会混淆,认为空间是故意分离,例如从Method中分离参数。 在某些情况下,Excel会坚持使用它们。通常,即使不需要它们也不会包含它们,例如名称中不存在空格。有时,如果不需要,Excel会将它们取出。 http://www.eileenslounge.com/viewtopic.php?f=27&t=25599
答案 3 :(得分:0)
如果宏需要通过使用运行宏的工作簿路径找到相对宏路径,并且需要从数组列表中运行多个宏,则下面的代码将有所帮助:
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