2015-12-02 40 views
0

可以請某人以編程方式幫助MS Word的ContentControl格式化。 我寫了一個代碼,根據它的標籤轉到特定的ContentControl。通過轉到由其標籤指定的每個ContentControl,此代碼運行良好。不過,我只需要格式化頁面編號2上的ContentControls。在特定頁面上格式化內容控件

我試圖限制循環只爲特定的書籤,頁面,表,但它不起作用。我不需要瀏覽文檔中的每個ContentContorl,它需要很長時間,這與宏的目的相反。我正在創建這個宏來加快報表格式。

這裏是我的代碼:

Sub EditCCbyTag() 

    Dim cc As ContentControl 
    Dim strText As String 

    Dim oThisdoc As Word.Document 
    Dim oCC1 As ContentControl 
    Dim oCCs1 As ContentControls 
    Dim oCC2 As ContentControl 
    Dim oCCs2 As ContentControls 
    Dim oCC3 As ContentControl 
    Dim oCCs3 As ContentControls 

    Set oThisdoc = ActiveDocument 
    Set oCCs1 = oThisdoc.SelectContentControlsByTag("DgDocDate01") 

    For Each oCC1 In oCCs1 
     If oCCs1.Count > 0 Then 
     oCC1.Range.Select 
     Dialogs(wdDialogContentControlProperties).Show 

      strText = InputBox("Please enter the DATE of report") 

      Set cc = ActiveDocument.SelectContentControlsByTag("DgDocDate01")(1) 
      cc.Range.Text = strText 
     End If 

    Next oCC1 

    ' the next CC DgDnvReportNo01 

    Set oThisdoc = ActiveDocument 
    Set oCCs2 = oThisdoc.SelectContentControlsByTag("DgDnvReportNo01") 

    For Each oCC2 In oCCs2 

     If oCCs2.Count > 0 Then 

     oCC2.Range.Select 
     Dialogs(wdDialogContentControlProperties).Show 

      strText = InputBox("Please enter the NUMBER of report") 

      Set cc = ActiveDocument.SelectContentControlsByTag("DgDnvReportNo01")(1) 
      cc.Range.Text = strText 
     End If 
    Next oCC2 

    ' the next CC DgRevNo01 

    Set oThisdoc = ActiveDocument 
    Set oCCs3 = oThisdoc.SelectContentControlsByTag("DgRevNo01") 

    For Each oCC3 In oCCs3 

     If oCCs3.Count > 0 Then 

     oCC3.Range.Select 
     Dialogs(wdDialogContentControlProperties).Show 

      strText = InputBox("Please enter the REVISION of report") 

      Set cc = ActiveDocument.SelectContentControlsByTag("DgRevNo01")(1) 
      cc.Range.Text = strText 

     End If 

    Next oCC3 

    MsgBox "Done!" 

    End Sub 
+0

「試圖限制循環只爲特定的書籤,頁面,表,但它不起作用」它不工作?這肯定是最有效的方法,我相當肯定它可以工作... –

回答

0

如果你只想2頁格式的內容的控制,你應該檢查的Information財產的內容控制的Range,如:

Dim cc as ContentControl 
If cc.Range.Information(wdActiveEndPageNumber) = 2 Then 
    ... Do work ... 
End If 

wdActiveEndPageNumber常量指物理頁面。如果您希望邏輯頁面(例如,如果Word已被指示重新啓動頁面編號),則應使用wdActiveEndAdjustedPageNumber常數。有關來源和細節,請參閱this link

+0

謝謝DanL對你的迴應!但我無法弄清楚,對不起。我試圖將它合併到代碼中,但是VBA給了我一個錯誤消息,指出沒有定義對象變量或者沒有定義WI塊變量。你能否擴展代碼?我想要編輯的內容控件只在頁面nummer 1和表格中。我試圖將表格設置爲範圍,以及所有其他的東西,但仍然無法弄清楚。 – Opensoul

+0

您應該包含用於在問題中設置表格的代碼。然後,您應該指定代碼失敗的行。這個錯誤是非常不確定的 - 它只是表明你沒有定義一些東西。 – DanL

+0

嗨DanL,它被解決了。首先選擇表格,然後通過selection.information選擇頁面,然後如果語句運行。它解決了。感謝您的幫助! – Opensoul