1

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

1 回答 1

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
于 2010-07-07T23:06:38.383 回答