Word 2007 vba - 未通过宏应用样式

时间:2010-07-28 16:20:12

标签: vba coding-style word-vba

我有一个基本上创建了几个表的宏代码,然后在某些文本中输入一些文本,然后放置一些文本占位符。当我尝试将样式应用于文本时出现问题。起初我以为只有占位符不受代码影响。但似乎宏观选择的常规文本也不适用。

代码基本上如下所示:

Selection.TypeText Text:="Entreprisecost:"
Selection.MoveRight Unit:=wdCell
Set cc = Selection.Range.ContentControls.Add(wdContentControlText)
cc.SetPlaceholderText Text:="Description of the cost"
cc.DefaultTextStyle = "EnterpriseStyle"
Selection.Style = ActiveDocument.Styles("EnterpriseStyle")

注意我如何在占位符和选择上定义样式。

接下来,我尝试记录一个简单的宏,我选择整行,然后将样式应用于选择。这在我录音时有用。但是当我运行宏时它不起作用。这很奇怪:

Selection.MoveUp Unit:=wdLine, Count:=5, Extend:=wdExtend
Selection.Style = ActiveDocument.Styles("ExperienceStyle")

为什么会这样?我的宏安全设置设置为默认介质,但我选择当然打开模板后启用宏。当我打开模板本身以及双击它以基于模板创建新文档时,会发生这种情况。有任何想法吗?

编辑:除了应用样式之外,宏的每一位都有效。运行应用样式的代码,文本不会更改。当我选择文本来检查其中的样式时,我可以看到该样式已应用。但它不是在同一时间。奇怪的是,如果我选择文本,然后手动重新应用样式,意味着,点击已经选择的相同样式,然后我看到样式真的应用了。

就像设置样式而没有实际应用它。

2 个答案:

答案 0 :(得分:2)

首先,您必须帮助我们完成代码并进行设置。我假设您至少有一个六乘二的表,其中选择单元格6,1(底部,左侧单元格)。其次,不要让我们猜测变量是什么;使用Dim语句。第三,我们没有你的风格,所以我将它们改为标准的Normal.dot。

话虽如此,您的代码可以正常工作,如下所示。我能看到的唯一错误是你在最后一部分使用了 ExperienceStyle ,在第一部分使用了 EnterpriseStyle 。如果其中任何一个不存在,您将收到错误。

Public Sub Test()
    Selection.TypeText Text:="Entreprisecost:"
    Selection.MoveRight Unit:=wdCell

    Dim cc As ContentControl
    Set cc = Selection.Range.ContentControls.Add(wdContentControlText)
    cc.SetPlaceholderText Text:="Description of the cost"
    cc.DefaultTextStyle = "Title"
    Selection.Style = ActiveDocument.Styles("Title")
    Selection.Style = ActiveDocument.Styles("Strong") 'Proof the style is being changed.

    Selection.MoveUp Unit:=wdLine, Count:=5, Extend:=wdExtend
    Selection.Style = ActiveDocument.Styles("Strong")
End Sub

答案 1 :(得分:1)

我认为你的问题是你在应用新Style之前没有清除格式。尝试这样做并告诉我们它是否有效