首页 文章

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

提问于
浏览
2

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

代码基本上如下所示:

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 回答

  • 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

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

相关问题