2014-01-06 44 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循环遍历各个部分。