2010-11-17 15 views
0

J'ai essayé de faire fonctionner ce travail pour toujours.
Je souhaite exécuter un module dans un autre classeur à partir du classeur en cours, wbCntl.
Le code exact fonctionne dans une application mais pas dans une autre.Exécution d'un module dans un autre classeur Excel, en utilisant VBA

sSignalInProcess et wbSignalInProcess sont définis correctement. L'idée est d'ouvrir ou de créer le fichier sSignalInProcess lors du premier passage, puis d'ignorer ce code lors de l'exécution suivante de son code.

Voici mon code:

Sub GetSignalFile() 
    'Open workbook if signal file is open 
    On Error Resume Next 
    Set wbSignalInProcess = Workbooks(sSignalInProcess) 
    If Err.Number <> 0 Then 
     Err.Clear 
     'Open existing signal workbook 
     On Error Resume Next 
     Set wbSignalInProcess = Workbooks.Open(sFilePath & sSignalInProcess) 
     If Err.Number <> 0 Then 
      Err.Clear 
      'Copy template signal workbook to a new workbook file for new signal 
      FileCopy (sStdSignal), (sFilePath & sSignalInProcess) 
      wbSignalInProcess.Save 
      'Open new signal workbook 
      Set wbSignalInProcess = Workbooks.Open(sFilePath & sSignalInProcess) 
     End If 
    End If 
    Err.Clear 
    Application.Run (wbSignalInProcess.Name & "!MainIntuitor") 
    wbCntl.Activate 
End Sub 

La ligne

Application.Run (wbSignalInProcess.Name & "!MainIntuitor") 

est ignorée et non exécutée sans erreur. Toute aide serait appréciée.

Grant

Répondre

0

Je vous suggère d'ajouter

On Error Goto 0 

avant la ligne critique. Peut-être que vous obtiendrez un message d'erreur plus utile alors. Soit dit en passant, la deuxième

On Error Resume Next 

dans votre code n'est pas nécessaire - une fois que vous avez activé « Resume Next », il permet de rester beeing activé jusqu'à ce que vous laissez votre Sub ou désactiver avec On Error Goto 0.

+0

Merci. C'est ce qu'il a fait. Appréciez l'aide. – Grant

+0

@Grant: vous êtes les bienvenus. Ne pas oublier l'accepter mon message comme "la réponse" –