Хорошо, я продолжал копать (я не люблю принимать поражение) и обнаружил, что вся моя предпосылка была неправильной! Элементы управления ActiveX в Word считаются «InlineShapes», а не «ContentControls». Но результаты, которые я читал при поиске inte rnet, сбили меня с толку (я не претендовал на звание самого острого инструмента в сарае).
Как только я это понял, еще несколько копаний дали ответ (см. ниже).
Итак, сначала перечислим 3 элемента управления в моем документе (и их индекс) со следующим Sub
Sub ListActiveXControls()
Dim i As Integer
i = 1
Do Until i > ActiveDocument.InlineShapes.Count
Debug.Print ActiveDocument.InlineShapes(i).OLEFormat.Object.Name & " Control Index = " & i
i = i + 1
Loop
End Sub
Теперь, переходя к EXCEL, я использовал следующее:
Sub trial()
Dim Word As Word.Application
Dim wdDoc As Word.Document
Set Word = New Word.Application
Set wdDoc = Word.Documents.Open("G:\CAPS Management Tool\Customer.docm")
Word.Application.Visible = True
debug.print "ActiveDocument Name is : " & ActiveDocument.Name
' Result = Nothing
' Allowing the code to continue without the pause caused the operation to fail
Application.Wait (Now + TimeValue("0:00:10")) ' See text below, would not work without pause
wdDoc.Activate
' Begin set ActiveX control values. In this instance,
' The first line corresponds to 'Textbox1'
ActiveDocument.InlineShapes(1).OLEFormat.Object.Text = "Success"
' The second line corresponds to 'Textbox2'
ActiveDocument.InlineShapes(2).OLEFormat.Object.Text = "Success"
' The third line corresponds to 'ChkBox1'
ActiveDocument.InlineShapes(3).OLEFormat.Object.Value = True
End Sub
По какой-то причине без команды «Ждать» операция не выполняется. Проходя через, если нет паузы, ActiveDocument кажется пустым, не знаю почему. Это происходит с документом с 2 элементами управления ActiveX или 165 элементами управления ActiveX, и необходимое время ожидания составляет 10 секунд на моем P C. Между прочим, установка почти 150 контрольных значений занимала всего несколько секунд после завершения периода ожидания.
Если кто-нибудь знает, почему, казалось бы, требуется «Подождите», мне было бы интересно узнать!