Поэтому я пытаюсь написать код, который добавляет текстовое поле над таблицей на каждой странице в текстовом документе. Это текстовое поле должно быть центрировано для выравнивания с таблицей (у меня нет проблем при создании центрированной таблицы на каждой странице). Я только недавно начал работать в VBA, поэтому моим знаниям немного не хватает. Вот мой код, это что-то вроде того, что я мог найти в Интернете.
Sub TextMaker()
'
' TextMaker Macro
'
'
Dim i As Long, Rng As Range, Shp As Shape
Dim objDoc As Document
Dim objTextBox As Shape
Set objDoc = ActiveDocument
With ActiveDocument
For i = 1 To 5
Set Rng = .GoTo(What:=wdGoToPage, Name:=i)
Set Shp = .Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, _
Left:=InchesToPoints(0.1), Top:=InchesToPoints(1.44), Width:=InchesToPoints(7.65), Height:=InchesToPoints(0.29), Anchor:=Rng)
With Shp
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.Left = wdShapeCenter
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Top = InchesToPoints(1.44)
With .TextFrame.TextRange
.Text = "Ref. No.: T" & vbCr & "Signature "
Set Rng = .Paragraphs.First.Range
With Rng
.Font.ColorIndex = wdRed
.End = .End - 1
.Collapse wdCollapseEnd
End With
End With
End With
Next
End With
End Sub
Вывод работает для первых двух страниц, но на 3-й странице выравнивание текстового поля не центрируется. Я проверил расположение, и текстовое поле все еще говорит, что оно центрировано относительно страницы, хотя это не так.
Код работает должным образом, пока таблицы не вставлены, но таблица, генерирующая код, если запустить после этой таблицы, не помещает таблицы на ту же страницу, что и текстовые поля.
Это третья страница моего документа, где все начинает идти не так, как надо. Текстовое поле должно располагаться над таблицей и выравниваться по центру.
Чтобы воспроизвести документ, создайте пустой документ и выполните код генерации этой таблицы:
Sub TableMaker()
For i = 1 To 5
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=6, NumColumns:= _
2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
Selection.Tables(1).Columns(1).Width = InchesToPoints(1.39)
Selection.Tables(1).Columns(2).Width = InchesToPoints(6.26)
Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
With Selection.Tables(1).Rows
.WrapAroundText = True
.VerticalPosition = InchesToPoints(1.82)
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.DistanceTop = InchesToPoints(0)
.DistanceBottom = InchesToPoints(0)
.AllowOverlap = False
End With
'place cursor at end of page
Selection.EndKey Unit:=wdStory
'insert page break
Selection.InsertBreak Type:=wdPageBreak
Next i
End Sub
Или запустите приведенный выше код генерации текста, а затем этот код генерации таблицы. В любом случае форматирование не соответствует. В этих документах не будет другого текста, но под таблицами на каждой странице будет размещено изображение.