2016-11-01 38 views
0

我正在嘗試創建一個打開文件的宏刷新查詢,然後保存並關閉。目前,宏啓動刷新,但在完成之前它會轉到「保存並關閉」命令,因此沒有任何更改。我已經看到有一段時間可以暫停或休眠一段時間來完成命令,但是我希望擴展這個宏來打開多個工作簿,這些工作簿需要不同的時間進行刷新,因此,是最後的手段。我目前使用DoEvents但是這似乎並沒有工作。如何讓VBA完成前面的命令(使用Bex分析器7刷新),然後再繼續下一步?

注:刷新致力於通過SAP貝克斯分析器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

我有這個目的的宏,我從來沒有過這樣的問題:

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 

主要的區別就在這裏代碼明智的是,我打電話刷新宏,而不是直接使用Run命令。

編輯:爲了使這項工作,你還需要在項目中添加「BExAnalyzer」參考。如果您不熟悉添加引用,則需要進入工具 - >引用,然後從可用引用的長列表中單擊「BExAnalyzer」。

我不知道爲什麼這樣做會產生任何影響,但正如我所說的,我一直髮現,在繼續之前,我的宏完成刷新(即使最多需要15分鐘)。我也使用BEx 7

+0

嗨,首先感謝快速響應!當我嘗試使用你的代碼時,它返回沒有定義關於SAPBexrefresh(True)行的Sub或Function? –

+0

@ R.Patrick-White我知道我必須做些什麼來完成這項工作,忘記它是什麼,我要編輯我的答案,包括完整的解決方案 – danl

+0

這就是感謝您的幫助! –

相關問題