如何用vba获取word文档最后有内容的结尾位置?

word文档中可以有文字、图片、表格、图形等各种对象。

有时候我们需要在word文档的结尾继续添加内容,这时候就需要定位到word文档的结尾位置。

在vba中 ,通过 Document对象的 Content 属性可以获取 word主文档的所有内容Range对象,通过Range对象的End属性即可获得文档结尾的位置。

如果要在文档结尾不断的添加内容,可以使用Range对象的InsertAfter方法。

如以下的代码在word文档的结尾不断的加入文字:

Sub exceloffice()
    '作者QQ:1722187970,微信:xycgenius,公众号:水星Excel
    Dim oRng As Range
    Dim oDoc As Document
    Set oDoc = Word.ActiveDocument
    Set oRng = oDoc.Content
    Debug.Print oRng.Start, oRng.End, oRng.Text
    oRng.InsertAfter "再来一次"
    '当插入文字以后,oRng对象自动包含了新插入的文字
    Debug.Print oRng.Start, oRng.End, oRng.Text
End Sub

如果要在结尾另起段落不断地添加内容,可以使用如下的代码:

Sub exceloffice()
    '作者QQ:1722187970,微信:xycgenius,公众号:水星Excel
    Dim oRng As Range
    Dim oDoc As Document
    Set oDoc = Word.ActiveDocument
    Set oRng = oDoc.Content
    Debug.Print oRng.Start, oRng.End, oRng.Text
    
    oRng.InsertParagraphAfter
    
       '当插入文字以后,oRng对象自动包含了新插入的文字
    Debug.Print oRng.Start, oRng.End, oRng.Text
    
    oRng.InsertAfter "再来一次"
    '当插入文字以后,oRng对象自动包含了新插入的文字
    Debug.Print oRng.Start, oRng.End, oRng.Text
End Sub

如果还要对新插入的内容所在的段落进行操作,可以先用Range对象Collapse的方法折叠,然后再用Expand方法扩展到整个段落,代码如下:

Sub exceloffice()
    '作者QQ:1722187970,微信:xycgenius,公众号:水星Excel
    Dim oRng As Range
    Dim oDoc As Document
    Set oDoc = Word.ActiveDocument
    Set oRng = oDoc.Content
    Debug.Print oRng.Start, oRng.End, oRng.Text
    
    oRng.InsertParagraphAfter
    
       '当插入文字以后,oRng对象自动包含了新插入的文字
    Debug.Print oRng.Start, oRng.End, oRng.Text
    
    oRng.InsertAfter "再来一次"
    '当插入文字以后,oRng对象自动包含了新插入的文字
    Debug.Print oRng.Start, oRng.End, oRng.Text
    
    oRng.Collapse wdCollapseEnd
    
    oRng.Expand (wdParagraph)
    
    oRng.Select
End Sub

       

发表评论