我正在尝试创建一个打开文件的宏来刷新查询,然后保存并关闭。目前,宏启动刷新,但在完成之前它将继续执行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
非常感谢任何帮助或指导。
答案 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