2015-11-04 108 views
0

爲了強化一些Word 2010樣式規範,我在下面編寫了VBA宏,這些規範在我的報告創作過程中傾向於解開。宏編譯沒有錯誤,但是當我在一個測試報告上運行它時,所有的格式化,但樣式名稱分配已被刪除,根本沒有任何反應。Word VBA腳本編譯時沒有錯誤但不起作用

Sub ntsReportFormatting() 

    Dim ntsReportDoc As Word.Document 

    Dim ntsNormal As Style 
    Dim ntsTOC1 As Style 
    Dim ntsTOC2 As Style 
    Dim ntsTOC3 As Style 

    Set ntsReportDoc = ActiveDocument 

    Set ntsNormal = ntsReportDoc.Styles("Normal") 
    With ntsNormal 
     .Font.Name = "Arial" 
     .Font.Size = 12 
     .ParagraphFormat.LeftIndent = 0.5 
     .ParagraphFormat.SpaceAfter = 0.6 
    End With 

    Set ntsTOC1 = ntsReportDoc.Styles("TOC 1") 
    With ntsTOC1 
     .Font.Name = "Arial" 
     .Font.Size = 12 
     .Font.Bold = True 
     .ParagraphFormat.LeftIndent = 0 
     .ParagraphFormat.SpaceBefore = 0.6 
     .ParagraphFormat.SpaceAfter = 0.6 
    End With 

    Set ntsTOC2 = ntsReportDoc.Styles("TOC 2") 
    With ntsTOC2 
     .Font.Name = "Arial" 
     .Font.Size = 12 
     .ParagraphFormat.LeftIndent = 0.17 
     .ParagraphFormat.SpaceBefore = 0.6 
     .ParagraphFormat.SpaceAfter = 0.6 
     .NoSpaceBetweenParagraphsOfSameStyle = True 
    End With 

    Set ntsTOC3 = ntsReportDoc.Styles("TOC 3") 
    With ntsTOC3 
     .Font.Name = "Arial" 
     .Font.Size = 12 
     .ParagraphFormat.LeftIndent = 0.33 
     .ParagraphFormat.SpaceBefore = 0.6 
     .ParagraphFormat.SpaceAfter = 0.6 
     .NoSpaceBetweenParagraphsOfSameStyle = True 
    End With 

End Sub 

我請教Lynda.com,MSDN文檔,YouTube和谷歌,我一直無法找到一個明確的解決方案。

+0

嘗試用WdBuiltinStyle枚舉值替換文字字符串值 - wdStyleNormal而不是「Normal」,例如 - 看看是否有所作爲。您可以在VBA對象瀏覽器(F2)中找到該列表,或者如果您鍵入WdBuiltinStyle,智能感應應該提供它。 (但是請注意,我從內存中給你這個,所以我可能會拼寫錯誤!) –

+0

這可能是'樣式'確實更新了,但它沒有在文檔文本中更新。除了TOC樣式外,它也適用於我,我沒有在我的樣式集中分配。 –

回答

0

我不能確認問題,宏正常工作,轉變作風,根據定義的參數

+0

這實際上非常有幫助!它適用於某人!也許有一個框我需要檢查或取消選中某個地方... –

+0

作品在空文檔上已經開箱 – tsolina

0

我有問題是,它更新了風格,但它並沒有更新的文檔文本。

我所做的是在您重置Styles後運行Loop

在您的上一次樣式編輯聲明之後添加此項。

For p = 1 To ActiveDocument.Paragraphs.Count 

    ActiveDocument.Paragraphs(p).Range.Select 

    ParaStyle = ActiveDocument.Paragraphs(p).Range.style 

    Selection.Range.style = ParaStyle 

Next 

我不確定是否有另一種方式做到這一點。

0

它也適用於我,但基於讓皮埃爾的答案,我不知道直接格式是否已應用於文本。這將覆蓋樣式格式,所以對樣式的更改不會顯示出來。

有一組命令可從當前選擇中刪除各種類型的格式。他們都以「清晰」這個詞開始。

例如,我選擇了一個段落併爲其應用了不同的字體。改變風格並沒有露面,直到我第一次做這樣的:

ntsReportDoc.Select 
Selection.ClearCharacterDirectFormatting 

但是你必須要注意,如果沒有使用樣式應用於他們這種事情也刪除斜體等。

相關問題