我有一个基本上创建了几个表的宏代码,然后在某些文本中输入一些文本,然后放置一些文本占位符。当我尝试将样式应用于文本时出现问题。起初我以为只有占位符不受代码影响。但似乎宏观选择的常规文本也不适用。
代码基本上如下所示:
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")
为什么会这样?我的宏安全设置设置为默认介质,但我选择当然打开模板后启用宏。当我打开模板本身以及双击它以基于模板创建新文档时,会发生这种情况。有任何想法吗?
编辑:除了应用样式之外,宏的每一位都有效。运行应用样式的代码,文本不会更改。当我选择文本来检查其中的样式时,我可以看到该样式已应用。但它不是在同一时间。奇怪的是,如果我选择文本,然后手动重新应用样式,意味着,点击已经选择的相同样式,然后我看到样式真的应用了。
就像设置样式而没有实际应用它。
答案 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之前没有清除格式。尝试这样做并告诉我们它是否有效