2010-11-17 2 views
0

Я пытался сделать эту работу навсегда.
Я хочу выполнить модуль в другой книге из текущей книги wbCntl.
Точный код работает в одном приложении, но не в другом.Выполнение модуля в другой книге Excel с использованием VBA

sSignalInProcess и wbSignalInProcess определены правильно. Идея состоит в том, чтобы либо открыть, либо создать файл sSignalInProcess на первом проходе, а затем пропустить этот код при последующем запуске его кода.

Вот мой код:

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 

Линия

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

пропускается и не выполняется без ошибок. Любая помощь будет оценена по достоинству.

Грант

ответ

0

Я предлагаю вам добавить

On Error Goto 0 

до критической линии. Возможно, тогда вы получите более полезное сообщение об ошибке. К слову, второй

On Error Resume Next 

в коде не нужен - раз вы активировали «Resume Next», он держит неоспоримое активирован до тех пор, пока оставить Sub или деактивировать его с On Error Goto 0.

+0

Спасибо. Так оно и было. Цените помощь. – Grant

+0

@Grant: добро пожаловать. Не забудьте принять мой пост как «ответ», –

Смежные вопросы