2017-06-29 157 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中提取相關文本