×
您的位置: 首页 > 编程笔记

Word中以VBA实现的自动翻页功能与文档结构图显示不同步

Word 时间:2013-03-14  查看:377   收藏

问题:我是VBA的初学者,手上有长Word文档需阅读,为强迫自己能够看完,欲实现自动翻页功能,用了以下两种方法:
方法一

  1. Option Explicit
  2. Dim 结束翻页 As Boolean
  3. Dim SSS As Integer
  4. Sub stop()
  5. 结束翻页 = True
  6. End Sub
  7. Sub start()
  8. SSS = Timer
  9. 结束翻页 = false
  10. Do
  11. If 结束翻页=true Then Exit Do
  12. If Timer >= SSS + 5 Then
  13. Application.Browser.Next
  14. SSS = Timer
  15. End If
  16. DoEvents
  17. Loop
  18. End Sub
  19. ========方法二
  20. Option Explicit
  21. Dim 结束翻页 As Boolean
  22. Sub stop()
  23. 结束翻页 = True
  24. End Sub
  25. Sub start()
  26. 结束翻页 = False
  27. Application.OnTime Now + TimeValue("00:00:05"), "do_it"
  28. End Sub
  29. Sub do_it()
  30. If 结束翻页 = False Then
  31. Application.Browser.Next
  32. start
  33. End If
  34. End Sub

两种方法均可实现翻页的功能,但第一种方法用起来太夸张,CPU总是100%;第二种方法比较理想,绝对的轻松。
然而问题是,我的Word文档都设有九级目录,看书的时候习惯于将正文与文档结构图对照着看,以理清自己的思路。在快速速读的时候,这个功能就更有作用。
第一种方法,随着自动翻页,文档结构图中的各级目录也会跟着跳转,书翻到哪里,目录的反蓝显示也就跳到哪里。
第二种方法,却无法实现这个功能,目录的反蓝显示永远只在初始的位置。除非书自动翻页以后,在页面中用鼠标点一下,反蓝的目录才会跳转。
这个问题我想是出在使用时间控件的时候,闪烁的光标的性质和正常的光标插入点的性质有点不一样,在翻页后用了插入“”的语句也不行。
请各位前辈帮助解决文档结构图中目录反蓝显示随自动翻页跳转的问题。

解答:
可以试下:

  1. Option Explicit
  2. Dim myByte As Byte
  3. Sub myStart()
  4. If Selection.Paragraphs(1).Range.IsEqual(ActiveDocument.Content.Paragraphs.Last.Range) = True Then
  5. myByte = 100
  6. Else
  7. myByte = 10
  8. End If
  9. Application.OnTime Now + TimeValue("00:00:05"), "Do_it"
  10. Application.ScreenUpdating = False
  11. ActiveDocument.ActiveWindow.DocumentMap = False
  12. ActiveDocument.ActiveWindow.DocumentMap = True
  13. Application.ScreenUpdating = True
  14. End Sub
  15. Sub Do_it()
  16. If myByte = 0 Then
  17. Selection.HomeKey wdStory
  18. myStart
  19. ElseIf myByte = 10 Then
  20. Selection.MoveDown Unit:=wdScreen, Count:=1
  21. myStart
  22. Else
  23. myByte = 0
  24. End If
  25. End Sub
  26. Sub myStop()
  27. myByte = 100
  28. End Sub

 

0% (0)
0% (0)