如何让 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
我正在尝试创建一个打开文件刷新查询然后保存并关闭的宏。当前,宏启动刷新,但它在完成之前继续执行“保存并关闭”命令,因此没有任何变化。我已经看到有一段时间关闭 '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