如何让 VBA 在继续执行下一个命令之前完成它的上一个命令(使用 Bex 分析器 7 刷新)?

How do I make VBA complete it's previous command (Refreshing using Bex analyser 7) before moving on to the next one?

我正在尝试创建一个打开文件刷新查询然后保存并关闭的宏。当前,宏启动刷新,但它在完成之前继续执行“保存并关闭”命令,因此没有任何变化。我已经看到有一段时间关闭 'pausing' 或 'sleeping' 以允许完成命令但是我希望扩展此宏以打开多个工作簿,其中包含需要不同时间刷新的查询因此,这将是最后的手段。我目前使用的是 DoEvents,但这似乎也不起作用。

注意:刷新通过 SAP Bex 分析器 7 进行。

我的代码:

Sub OpenAndRefresh()

Workbooks.Open "QueryRefresh.xls", UpdateLinks:=False

Workbooks("QueryRefresh.xls").Activate

Run "BExAnalyzer.XLA!SAPBEXrefresh", True

DoEvents

Workbooks("QueryRefresh.xls").Close SaveChanges:=False

End Sub

如有任何帮助或指导,我们将不胜感激。

我有一个用于此目的的宏,我从来没有遇到过这个问题:

Public Sub Refresh_All()

Dim filepathstr As String
Dim filename As String
Dim wbk As Workbook

filepathstr = Sheet1.Range("filepath").Value

For Each cell In Sheet1.Range("workbooks")

    If Not cell.Value = "" Then

        filename = cell.Value
        Set wbk = Workbooks.Open(filepathstr & filename)

        ''''**REFRESH**''''''
        SAPBexrefresh (True)

        Application.DisplayAlerts = False
        wbk.Save
        wbk.Close False
        Application.DisplayAlerts = True

    End If

    Next cell

End Sub

代码方面的主要区别是我直接调用刷新宏而不是使用 运行 命令。

编辑:要完成这项工作,您还需要在项目中添加 "BExAnalyzer" 引用。如果您不熟悉添加引用,您需要进入工具 --> 引用,然后在可用引用的长列表中单击 "BExAnalyzer"。

我不确定为什么这会有什么不同,但正如我所说,我总是发现我的宏在继续之前完成刷新(即使这需要长达 15 分钟)。我也在使用 BEx 7