除非代码以VBA结尾,否则Shell不会打开Excel

时间:2016-05-27 08:41:51

标签: shell excel-vba mks vba excel

我正在尝试使用" im exportissues 123456"从PTC(MKS)获取CR(更改请求)状态。在VBA中查询。但它确实打开状态表(一个新的excel表,它通过查询打开),除非我的代码结束。下面是我的代码的片段。

  
Sub Query_CR_Status()

    shell_output = Shell("im exportissues 123456", 1)     'this should open up a new excel sheet containing CRs)

    Application.Wait (Now + TimeValue("0:00:20"))         'waiting 20sec

   'here: My code which will read information from the above generated excel sheet
End Sub

但我的问题是新的excel表格没有打开,除非它到达" End Sub"

1 个答案:

答案 0 :(得分:0)

Application.Wait()会阻止应用程序在指定的时间内执行任何。因此,如果您打开一个打开工作簿的命令,但应用程序处于等待模式,那么它将被延迟。

您可以尝试使用以下内容来解决这个问题:

  
Sub Query_CR_Status()

Dim wbC As byte
wbC = Workbooks.Count

    shell_output = Shell("im exportissues 123456", 1)

    While Workbooks.Count = wbC
        DoEvents '// Process pending messages until workbook count changes
    Wend

   '// Rest of code

End Sub

或者,Chip Pearson创建了一个ShellAndWait函数,可能更适合这个。