从另一个工作簿运行excel宏

时间:2010-05-10 20:06:24

标签: excel excel-vba vba

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

目前我在做:

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

我收到的错误消息是“此工作簿中可能没有宏#1004”

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

如何从托管在其他服务器上的其他工作簿运行宏?

会使用加载项帮助我吗?

4 个答案:

答案 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