Vba 更改表格标题位置

Vba 更改表格标题位置,vba,ms-word,Vba,Ms Word,如何更改word文档中现有表格标题的位置?我有一个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.Capt

如何更改word文档中现有表格标题的位置?我有一个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

Caption属性指的是应用程序标题栏,而不是文档中的标题。(见附件)

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

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

以下是一个示例:

  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中提取相关文本

您发布的代码有什么问题?如果它不做您想要的,它会做什么?.Tables(i).Application.Caption=”“不会删除我现有的标题,因此我最终会在每个表上获得两个标题。Application.Caption指的是应用程序窗口标题栏中显示的文本,而不是表()的标题,因此,设置此选项不会更改表格标题