2015-11-04 111 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 

但是你必须要注意,如果没有使用样式应用于他们这种事情也删除斜体等。

相关问题