我有一个服务器上的宏。我需要能够从连接到此服务器的不同工作站运行它。从另一个工作簿运行Excel宏
目前我做的:
Application.Run ("L:\database\lcmsmacro\macro1.xlsm!macro_name")
我得到的错误信息是
我已经确信,我的安全设置“在此工作簿#1004宏可能无法使用”设置在最低级别。
如何从另一台服务器上托管的其他工作簿运行宏?
会使用加载项帮助我吗?
我有一个服务器上的宏。我需要能够从连接到此服务器的不同工作站运行它。从另一个工作簿运行Excel宏
目前我做的:
Application.Run ("L:\database\lcmsmacro\macro1.xlsm!macro_name")
我得到的错误信息是
我已经确信,我的安全设置“在此工作簿#1004宏可能无法使用”设置在最低级别。
如何从另一台服务器上托管的其他工作簿运行宏?
会使用加载项帮助我吗?
我觉得你的语法缺少单引号字符:
Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name")
然后,如果你需要的参数传递给它的语法是这样的:
Application.Run ("'L:\database\lcmsmacro\macro1.xlsm'!macro_name","param1","param2")
这个错误也显示在远程工作簿中存在重复的宏名称时启动,例如两个名为“macro_name”的宏。花了我一会儿才知道!
通常在名称中,如果在名称中有空格或标点符号,则必须使用单个'',以免Excel认为空间是故意的分隔,例如将参数与方法分开。 在某些情况下,Excel会坚持使用它们。通常包含它们并没有害处,即使它们不是必需的,例如当名称中不存在空格时。如果不需要,Excel有时会将它们取出。 http://www.eileenslounge.com/viewtopic.php?f=27&t=25599
如果您需要使用您从中运行宏工作簿路径上寻找与宏路宏,你需要运行从数组列表中的几个宏,下面的代码将有助于:
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
为什么我需要单引号吗? – 2010-05-10 20:27:22
它是用于链接任何已关闭的excel工作簿的标准语法。例如,如果您将单元格链接到另一个封闭工作簿中的另一个单元格,则语法如下所示: 'C:\ Documents and Settings \ mnbtjf01 \ Desktop \ [myWorkbook.xls] Sheet1'!$ F $ 15 如果您需要对联网电子表格进行更多控制,您还可以走一步。这是一个很好的资源: http://www.vbaexpress.com/kb/getarticle.php?kb_id=279 – Fink 2010-05-10 21:05:19
如果有SheetName的变量,那么我们可以使用--Application.Run“'”&ExcelSheetName&“' !宏名” – OverrockSTAR 2013-05-13 03:42:21