我对此事感到困惑 - 在录制宏时我基本上添加了一些字段并进入设计模式以便能够替换占位符的虚拟文本。现在,我在录制宏时退出设计模式,一切似乎都正常。但是在播放宏时,它会在ActiveDocument.ToggleFormsDesign
之后停止。
可能导致这种情况的原因是什么?还有其他人经历过这个吗?
这是一个宏的片段:
Selection.Range.ContentControls.Add (wdContentControlText)
ActiveDocument.ToggleFormsDesign
Selection.TypeText Text:="Date"
Selection.MoveLeft Unit:=wdCharacter, Count:=4, Extend:=wdExtend
Selection.Style = ActiveDocument.Styles("TextRed")
ActiveDocument.ToggleFormsDesign
答案 0 :(得分:2)
原因是Selection
对象在ToggleDesignMode
之后丢失 - 意味着不再有Selection
个对象。在您录制的示例中,您重新选择了键入“日期”的位置,但Word不知道在哪里选择。
解决这个问题的方法是使用录制的宏作为起点,然后进一步清理它们。像这样:
Sub InsertContentControl()
Dim myDoc As Document
Set myDoc = ActiveDocument
Dim tr As Style
Set tr = myDoc.Styles("TextRed"):
Dim cc As ContentControl
Dim sel As Range
Set sel = Selection.Range
Set cc = sel.ContentControls.Add(wdContentControlText)
cc.SetPlaceholderText Text:="Date"
cc.DefaultTextStyle = tr
End Sub
要使用新样式执行此操作,请使用以下命令:
Sub InsertContentControlwithNewStyle()
Dim myDoc As Document
Set myDoc = ActiveDocument
Dim tr As Style
Set tr = myDoc.Styles.Add("New TextRed")
tr.BaseStyle = wdStyleNormal
tr.Font.ColorIndex = wdRed
Dim cc As ContentControl
Dim sel As Range
Set sel = Selection.Range
Set cc = sel.ContentControls.Add(wdContentControlText)
cc.SetPlaceholderText Text:="Date"
cc.DefaultTextStyle = tr
End Sub