2010-05-10 14 views
7

Tengo una macro que está en un servidor. Necesito poder ejecutarlo desde diferentes estaciones de trabajo que se conectan a este servidor.ejecutando excel macro desde otro libro de trabajo

Actualmente estoy haciendo:

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

El mensaje de error que estoy recibiendo es "La macro puede no estar disponible en este libro # 1004"

ya he asegurado de que la configuración de seguridad son establecer en el nivel más bajo.

¿Cómo ejecuto una macro de otro libro que está alojado en un servidor diferente?

¿Me ayuda el uso de complementos?

Respuesta

17

Creo que su sintaxis le faltan los caracteres de comillas simples:

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

Entonces, si usted necesita para pasar parámetros a que la sintaxis sería así:

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

qué ¿Necesito comillas simples? –

+5

Es la sintaxis estándar para vincular cualquier libro para Excel que esté cerrado. Por ejemplo, si estuviera vinculando una celda a otra celda en un libro cerrado diferente, la sintaxis se vería así: 'C: \ Documents and Settings \ mnbtjf01 \ Desktop \ [myWorkbook.xls] Hoja1'! $ F $ 15 También podría ir un paso más allá si necesita más control sobre la hoja de cálculo en red. Aquí hay un buen recurso: http://www.vbaexpress.com/kb/getarticle.php?kb_id=279 – Fink

+0

Si hay variables para SheetName, entonces, podemos usar - Application.Run "'" & ExcelSheetName & "' ! MacroName " – OverrockSTAR

1

Este error también espectáculos cuando hay nombres de macro duplicados en el libro de trabajo remoto, por ejemplo dos macros llamadas "macro_name". Me llevó un tiempo descubrirlo!

0

Generalmente en Nombres un solo 'es necesario si tiene un espacio o puntuación en un nombre para que Excel no se confunda pensando que el espacio es una separación deliberada, como al separar argumentos de un Método. En algunos casos Excel insistirá en ellos. Por lo general, no es perjudicial incluirlos, incluso si no son necesarios, por ejemplo, cuando no hay espacios en los nombres. A veces, Excel los eliminará si no son necesarios. http://www.eileenslounge.com/viewtopic.php?f=27&t=25599

0

Si la macro es necesario encontrar camino macro relativa mediante el uso de ruta de libro desde el que se ejecuta la macro y necesita ejecutar varias macros de la lista de arreglo, el código de abajo le ayudará:

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 
Cuestiones relacionadas