2017-06-29 125 views
0

如何更改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 
+0

您发布的代码有什么问题?如果它没有做你想做的事,它会做什么? –

+0

。表(i).Application.Caption =“”不会删除我现有的标题,因此我最终在每个表上都获得了两个标题。 –

+0

Application.Caption是指在应用程序窗口的标题栏中显示的文本,而不是表格的标题(https://msdn.microsoft.com/VBA/Word-VBA/articles/application-caption-property-word ),所以设置这个不会改变表格标题 – Jane

回答

0

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

我无法找到任何方式直接引用文档中的字幕。但是,字幕使用字段存储在文档中,因此您可以使用Fields集合来访问它们。具体而言,序列(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中提取相关文本