更改表标题位置

时间:2017-06-29 15:40:55

标签: ms-word word-vba

我们如何更改word文档中现有表格标题的位置?我有一个带有100个表格的文档文档,其中顶部添加了标题,但我需要将其移动到表格的底部。我的表格标题也有标题。

  Sub change_caption_position()
  Application.ScreenUpdating = False
  Dim i As Long
  With ActiveDocument
  For i = .Tables.Count To 1 Step -1
   .Tables(i).Application.Caption = ""
   .Tables(i).Select
  Selection.InsertCaption Label:="Table", TitleAutoText:="", _
  Title:="", Position:=wdCaptionPositionBelow, ExcludeLabel:=0
  Next
  End With
  Application.ScreenUpdating = True
  End Sub

1 个答案:

答案 0 :(得分:0)

标题属性是指应用程序标题栏而不是文档中的标题。 (见https://msdn.microsoft.com/VBA/Word-VBA/articles/application-caption-property-word

我无法找到直接引用文档中字幕的方法。但是,字幕使用字段存储在文档中,因此您可以使用Fields集合访问它们。具体地,序列(SEQ)字段用于生成数字。标题的其余部分只是文字。

要查找字幕,您可以遍历文档中的所有字段并确定哪些是序列字段。您可能有其他类型的标题,例如数字,因此请使用“代码”属性获取该字段的全文,并检查它是否适用于表格。然后,您需要识别包含此字段的段落并将其删除。

以下是一个示例:

  Sub Delete_Table_Captions()
    Application.ScreenUpdating = False
    Dim i As Long
    With ActiveDocument
    For i = .Fields.Count To 1 Step -1
    Dim f As Field
    Set f = .Fields(i)
    If f.Type = wdFieldSequence Then
        Dim s As String
        s = f.Code.Text
        If InStr(1, s, "Table", vbTextCompare) > 0 Then
            f.Code.Paragraphs(1).Range.Text = ""
        End If
    End If

    Next
    End With
    Application.ScreenUpdating = True
  End Sub

注意:这只会删除原始标题,因此您仍然需要插入新标题。您的示例并未将现有标题文本复制到新标题,因此,如果您要这样做,则需要先保存原始标题中的文本,然后再删除它们并创建新标题。您可以从段落(1).Range.Text

中提取相关文本