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 に答える