Word VBA:添加带有内嵌文本换行的文本框到文档末尾

时间:2014-07-26 09:35:01

标签: vba ms-word ms-office word-vba word-2013

我试图编写一个宏,它会在Word文档中插入文本框,并使用带文本的文本换行格式化它们。

到目前为止,这是我的代码:

Sub Example()
    Dim newTextbox As Shape
    For I = 1 To 10
        Set newTextbox = ActiveDocument.Shapes.AddTextbox _
        (Orientation:=msoTextOrientationHorizontal, _
        Left:=0, Top:=0, Width:=100, Height:=50)
        newTextbox.WrapFormat.Type = wdWrapInline
        newTextbox.TextFrame.TextRange = I
    Next
End Sub

我遇到的问题是,不是每个文本框都被添加到文档的开头,而是正如目前所发生的那样,我需要将它添加到最后。我理解,在我给出的示例中,我可以简单地使用For I = 10 To 1 Step -1。但是,由于我在实际项目中使用了文本框,我无法做到这一点。

我花了几个小时玩代码,但还没有能够弄明白。提前感谢您的帮助。

约什

1 个答案:

答案 0 :(得分:0)

约书亚,这是最后的工作代码:

Sub InsertInlineTextBox()

' Move all the text after the cursor to a new paragraph
' and jump to the start point of this paragraph
Selection.InsertParagraphAfter
Selection.MoveDown Unit:=wdParagraph, count:=1

Dim aShape As Shape

' Insert the shape at the current cursor position +1 point down in vertical
' direction to prevent automatic moving the shape to the previous paragraph
' during 'inlining'
Set aShape = ActiveDocument.Shapes.AddTextbox( _
    msoTextOrientationHorizontal, _
    Selection.Information(wdHorizontalPositionRelativeToPage), _
    Selection.Information(wdVerticalPositionRelativeToPage) + 1, 400, 60)

With aShape
    .TextFrame.MarginBottom = 0 ' adjust text margins
    .TextFrame.MarginLeft = 0
    .TextFrame.MarginRight = 0
    .TextFrame.MarginTop = 0
    .Line.Visible = msoFalse    ' don't show the border

    ' converting to InlineShape will place
    ' the shape at the start point of paragraph
    .ConvertToInlineShape
End With

' Remove carriege return before the shape
Selection.EndOf Unit:=wdParagraph, Extend:=wdMove
Selection.MoveLeft Unit:=wdCharacter, count:=1
Selection.Delete Unit:=wdCharacter, count:=1
End Sub

我还使用此宏来禁用文本框中的拼写检查 因为它们通常包含一堆C ++示例代码:

Sub NoSpellCheck()
  Selection.Range.SpellingChecked = True
  Selection.Range.NoProofing = True
End Sub