2010-05-10 70 views
7

我有一個服務器上的宏。我需要能夠從連接到此服務器的不同工作站運行它。從另一個工作簿運行Excel宏

目前我做的:

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

我得到的錯誤信息是

我已經確信,我的安全設置「在此工作簿#1004宏可能無法使用」設置在最低級別。

如何從另一臺服務器上託管的其他工作簿運行宏?

會使用加載項幫助我嗎?

回答

17

我覺得你的語法缺少單引號字符:

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

然後,如果你需要的參數傳遞給它的語法是這樣的:

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

爲什麼我需要單引號嗎? – 2010-05-10 20:27:22

+5

它是用於鏈接任何已關閉的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

+0

如果有SheetName的變量,那麼我們可以使用--Application.Run「'」&ExcelSheetName&「' !宏名」 – OverrockSTAR 2013-05-13 03:42:21

1

這個錯誤也顯示在遠程工作簿中存在重複的宏名稱時啓動,例如兩個名爲「macro_name」的宏。花了我一會兒才知道!

0

通常在名稱中,如果在名稱中有空格或標點符號,則必須使用單個'',以免Excel認爲空間是故意的分隔,例如將參數與方法分開。 在某些情況下,Excel會堅持使用它們。通常包含它們並沒有害處,即使它們不是必需的,例如當名稱中不存在空格時。如果不需要,Excel有時會將它們取出。 http://www.eileenslounge.com/viewtopic.php?f=27&t=25599

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 
相關問題