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

2018-06-21 02:23:59来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Word中如何输入圆圈中是15的序号

下一篇:Word文档中的光标为什么跳得飞快