无法在Word VBA中关闭设计模式

时间:2010-07-07 19:22:26

标签: vba ms-word word-contentcontrol

我对此事感到困惑 - 在录制宏时我基本上添加了一些字段并进入设计模式以便能够替换占位符的虚拟文本。现在,我在录制宏时退出设计模式,一切似乎都正常。但是在播放宏时,它会在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

1 个答案:

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