Не удается отключить режим разработки в Word VBA - PullRequest
1 голос
/ 07 июля 2010

Я озадачен этой вещью - при записи макроса, где я в основном добавляю несколько полей и перехожу в режим разработки, чтобы иметь возможность заменить фиктивный текст заполнителя.Теперь я выхожу из режима проектирования при записи макроса, и все, кажется, работает нормально.Но при воспроизведении макроса он просто останавливается после 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 Ответ

2 голосов
/ 08 июля 2010

Причина в том, что объект 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...