Значение текстового поля ActiveX

Как получить значение текстового поля в Word? Я знаю, что в excel правильный синтаксис: ActiveSheet.Shapes(x).Name .

Я подумал, что в word будет правильный синтаксис< br> ActiveDocument.Shapes(x).Name,
но, похоже, это не работает.

С этим фрагментом кода я также не смог найти текстовое поле:

For i = 1 To ActiveDocument.Shapes.Count
    MsgBox ActiveDocument.Shapes(i).Name
Next i

person jroeleveld    schedule 26.12.2011    source источник


Ответы (2)


  1. Чтобы получить значение стандартного текстового поля, используйте это: ActiveDocument.Shapes(1).TextFrame.TextRange.Text

  2. Чтобы получить значение элементов управления ActiveX (объектов OLE), используйте этот синтаксис, где TextBox1 — имя элемента управления, используйте ActiveDocument.TextBox1.Value

  3. Чтобы получить имя элементов управления ActiveX, используйте это: ActiveDocument.InlineShapes(1).OLEFormat.Object.Name

person Rachel Hettinger    schedule 26.12.2011
comment
Спасибо за ваш ответ, но это для текстового поля по умолчанию, а не для текстового поля элемента управления ActiveX. Сейчас я читаю что-то об «OLEObjects», что кажется немного более правильным. - person jroeleveld; 27.12.2011
comment
@jroeleveld Я отредактировал ответ, включив в него синтаксис элементов управления ActiveX. - person Rachel Hettinger; 27.12.2011
comment
Да, но как мне вернуть имя элемента управления? - person jroeleveld; 27.12.2011
comment
@jroeleveld См. третий пункт, как получить имя элемента управления. - person Rachel Hettinger; 27.12.2011
comment
Спасибо, это почти правильно... но это работает только для опциональных кнопок. Не для текстового поля. - person jroeleveld; 28.12.2011
comment
Наконец-то я кое-что получил: с помощью ActiveDocument.ContentControls(x).Range.Text я могу вернуть значения текстовых полей. Я только не знаю, как вернуть его имя. - person jroeleveld; 28.12.2011
comment
@jroeleveld Какую версию Word вы используете? Код работает для v2010. - person Rachel Hettinger; 28.12.2011
comment
v2010. Если я использую ваш код, я получаю только 2 объекта (2 флажка). Не любое текстовое поле :(. - person jroeleveld; 28.12.2011
comment
Хм. Не видя вашего конкретного файла, трудно определить, что происходит. В моем образце файла есть смесь текстовых полей и флажков в документе, и третий пункт выше работает просто отлично. - person Rachel Hettinger; 29.12.2011

Я использовал теги (свойства объекта -> назначить имя тега) для редактирования значения объекта. Используйте этот синтаксис, чтобы изменить значение элемента управления содержимым: ActiveDocument.SelectContentControlsByTag("Your-Content-Control-Tag").Item(1).Range.Text = "your-preferred-value" В любом случае, спасибо Рейчел Хеттингер за ваше терпение ;).

person jroeleveld    schedule 29.12.2011