2014-01-06 47 views
1

我在MS Access的形式,允許用戶輸入他們從外地收集和形式也有編譯所有的信息到正式報告選項數據。報告中包含的覆蓋片和一個目錄表以及留下了額外的文件部分報頭頁在打印時/出口到被附接。VBA字異步執行

有跡象表明,執行他們的過程實際上是完成前兩兩件事:

  • 一個子程序創造了許多格式表,但只能獲得相應的數據創建的表,格式不馬上和應用結果,一旦文檔完成鍵入,格式化就會終止,並會刪除任何多餘的頁面。這影響了第二個問題。

  • 由於頁碼的每一頁是不一樣的,部分用於使每個頁面都可以有與包含在頁碼獨特的頁腳。循環用於遍歷文檔並取消所有頁眉和頁腳之間的鏈接。然後,它從文檔的開頭開始和頁腳移動到頁腳和寫入的頁碼。這代碼如下:

    While Not Selection.Information(wdActiveEndPageNumber) 
    If Selection.Information(wdActiveEndPageNumber) = (Section_Page + 1) Then 
        Selection.TypeText "Page: " & (pgNum + Section_Length) 
        pgNum = pgNum + Section_Length 
    Else 
        Selection.TypeText "Page: " & pgNum 
    End If 
    pgNum = pgNum + 1 
    ActiveWindow.ActivePane.View.NextHeaderFooter 'move to the next page's footer 
    Wend 
    

,我用的這部分代碼遇到的問題是,選擇並不總是移動到下一個頁腳速度不夠快爲上的下一個屬於結果頁腳頁面有時硬塞到同一頁面另一個頁腳和頁腳看起來像「頁:5頁:6」,而不是「第5頁:」一個和「第6頁:」在下。

請不要建議內置的Word頁面編號 - 我縮短了代碼在這裏,有3到7節之間需要間距的任何地方。我想,如果有一種方式來獲得的代碼,以異步執行的代碼塊將工作。

回答

0

甲權宜之計。將插入的

的DoEvents

改變之後和之前的ActiveWindow一個(或幾個)線(S).... NextHeaderFooter。該命令對OS執行。這可能會讓Word需要趕上的時間。

當然,您最好避免使用ActiveWindow ...,並通過For循環遍歷各個部分。