2014-10-10 68 views
0

我正在嘗試使用VBA來自動從Hyperion中提取數據(我是VBA的新手)。我必須在第一張紙上選擇一個單元格範圍,按「Alt」,X,S,R,允許它拉取數據,然後轉到下一張紙並重復。我遇到的問題是宏通過選項卡並突出顯示所需的單元格,但sendkeys(所有五個實例)在完整宏的末尾運行,而不是在每個步驟之後運行。任何幫助,將不勝感激。宏1-5與不同的圖紙名稱完全相同。Sendkeys不會在宏的中間運行

代碼我目前有:

Sub RunAllMacros() 
Macro1 
Macro2 
Macro3 
Macro4 
Macro5 
End Sub 

Sub Macro1() 
    Sheets("Sheet 1").Select 
    Range("C5:H15").Select 
    Range("H15").Activate 
    Selection.ClearContents 
    Range("A1:H15").Select 
    Range("H15").Activate 
    SendKeys ("%"), True 
    SendKeys ("x"), True 
    SendKeys ("s"), True 
    SendKeys ("r"), True 
    Application.Wait (Now + #12:00:01 AM#) 

End Sub 
+1

如果您在代碼的開頭添加了DoEvents,那麼這是否可以解決問題? – 2014-10-10 17:35:17

+0

'Alt' +'x'表示加載項選項卡。爲什麼你不能通過名稱調用所需的加載宏? – guitarthrower 2014-10-10 17:42:26

回答

0

試試這個修改。

Dim dTILL as double 
SendKeys ("%(xsr)"), True 
dTill = Now + TimeSerial(0,0,2) 
Do While dTILL>Now: DoEvents: Loop 

這應該讓消息泵允許外部進程趕上。

+0

這工作完美。感謝您的幫助。感謝所有人的回覆。 – Allen 2014-10-10 21:35:10