在继续下一个命令之前,如何使VBA完成上一个命令(使用Bex分析仪7刷新)?

时间:2016-11-01 15:09:31

标签: excel-vba refresh sap wait sleep

我正在尝试创建一个打开文件的宏来刷新查询,然后保存并关闭。目前,宏启动刷新,但在完成之前它将继续执行Save and close命令,因此没有任何更改。我已经看到有一些方法可以暂停“暂停”或“休眠”一段时间以允许命令完成但是我希望扩展此宏以打开多个工作簿,查询需要不同的时间来刷新,因此是最后的手段。我目前使用的是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

非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:0)

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

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