VBA对Word行、段落和光标位置的移动、选择和操作
提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!
在 Mr.Abao'S Blog 上看到的,VBA编程时要参考,特地转一下,另外由于嵌入到VBScript脚本中编程,对一些常量我给出了声明:
Const wdCharacter = 1
Const wdExtent = 1
Const wdExtend = 1
Const wdGoToBookmark = -1
Const wdLine = 5
Const wdCell = 12
Const wdTableFormatSimple2 = 2
Const wdAlignParagraphRight = 2
Const wdYellow = 7
Const wdToggle = 9999998
Const wdAlignParagraphCenter = 1
Const wdSentence = 3
Const wdParagraph = 4
Const wdStory = 6
Const wdMove = 0
下面我将 Mr.Abao'S Blog 的内容转帖(略作修改,主要是注释部分增加了VBScript的脚本写法):在WORD中用VBA宏语言选定一行、一段,删除一行、一段,移动光标至行首、行尾、段首、段尾等。
Sub MoveToCurrentLineStart()
' 移动光标至当前行首
' Selection.HomeKey wdLine
Selection.HomeKey unit:=wdLine
End Sub
Sub MoveToCurrentLineEnd()
' 移动光标至当前行尾
' Selection.EndKey wdLine
Selection.EndKey unit:=wdLine
End Sub
Sub SelectToCurrentLineStart()
' 选择从光标至当前行首的内容
' Selection.HomeKey wdLine, wdExtend
Selection.HomeKey unit:=wdLine, Extend:=wdExtend
End Sub
Sub SelectToCurrentLineEnd()
' 选择从光标至当前行尾的内容
' Selection.EndKey wdLine, wdExtend
Selection.EndKey unit:=wdLine, Extend:=wdExtend
End Sub
Sub SelectCurrentLine()
' 选择当前行
' Selection.HomeKey wdLine
' Selection.EndKey wdLine, wdExtend
Selection.HomeKey unit:=wdLine
Selection.EndKey unit:=wdLine, Extend:=wdExtend
End Sub
Sub MoveToDocStart()
' 移动光标至文档开始
' Selection.HomeKey wdStory
Selection.HomeKey unit:=wdStory
End Sub
Sub MoveToDocEnd()
' 移动光标至文档结尾
' Selection.EndKey wdStory
Selection.EndKey unit:=wdStory
End Sub
Sub SelectToDocStart()
' 选择从光标至文档开始的内容
' Selection.HomeKey wdStory, wdExtend
Selection.HomeKey unit:=wdStory, Extend:=wdExtend
End Sub
Sub SelectToDocEnd()
' 选择从光标至文档结尾的内容
' Selection.EndKey wdStory, wdExtend
Selection.EndKey unit:=wdStory, Extend:=wdExtend
End Sub
Sub SelectDocAll()
' 选择文档全部内容(从WholeStory可猜出Story应是当前文档的意思)
Selection.WholeStory
End Sub
Sub MoveToCurrentParagraphStart()
' 移动光标至当前段落的开始
' Selection.MoveUp wdParagraph
Selection.MoveUp unit:=wdParagraph
End Sub
Sub MoveToCurrentParagraphEnd()
' 移动光标至当前段落的结尾
' Selection.MoveDown wdParagraph
Selection.MoveDown unit:=wdParagraph
End Sub
Sub SelectToCurrentParagraphStart()
' 选择从光标至当前段落开始的内容
' Selection.MoveUp wdParagraph, wdExtend
Selection.MoveUp unit:=wdParagraph, Extend:=wdExtend
End Sub
Sub SelectToCurrentParagraphEnd()
' 选择从光标至当前段落结尾的内容
' Selection.MoveDown wdParagraph, wdExtend
Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
End Sub
Sub SelectCurrentParagraph()
' 选择光标所在段落的内容
' Selection.MoveUp wdParagraph
' Selection.MoveDown wdParagraph, wdExtend
Selection.MoveUp unit:=wdParagraph
Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
End Sub
Sub DisplaySelectionStartAndEnd()
'显示选择区的开始与结束的位置,注意:文档第1个字符的位置是0
MsgBox ("第" & Selection.Start & "个字符至第" & Selection.End & "个字符")
End Sub
Sub DeleteCurrentLine()
' 删除当前行
' Selection.HomeKey wdLine
' Selection.EndKey wdLine, wdExtend
Selection.HomeKey unit:=wdLine
Selection.EndKey unit:=wdLine, Extend:=wdExtend
Selection.Delete
End Sub
Sub DeleteCurrentParagraph()
' 删除当前段落
' Selection.MoveUp wdParagraph
' Selection.MoveDown wdParagraph, wdExtend
Selection.MoveUp unit:=wdParagraph
Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
Selection.Delete
End Sub