2015-05-29 4 views
2

Моя процедура VBA предназначена для изменения текста в текстовом поле в нижнем колонтитуле документа. В настоящее время он идентифицируется следующим образом:Как определить конкретное текстовое поле?

Dim R1 as Word.Range 
Set R1 = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range 
R1.ShapeRange(1).TextFrame.TextRange.Text = "xxxx" 

Тем не менее, пользователи могут изменять этот шаблон и, возможно, добавлять другие текстовые поля. Как я могу гарантировать, что я обращаюсь к правильному текстовому полю?

ответ

1

Сначала узнайте, что это за имя этого текстового поля. Для этого вы можете использовать этот код

Sub Sample() 
    Dim shp 
    Dim R1 As Word.Range 

    Set R1 = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range 

    For Each shp In R1.ShapeRange 
     Debug.Print shp.Name 
    Next shp 
End Sub 

После того, как вы знаете имя, то просто использовать это имя

Sub Sample() 
    Dim R1 As Word.Range 

    Set R1 = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range 

    R1.ShapeRange("Text Box 1").TextFrame.TextRange.Text = "xxrrrxx" 
End Sub 

Этот путь, даже если новые формы будут добавлены ваш код всегда будет писать правильное текстовое поле.

+0

Спасибо за быстрый ответ. Какое свойство текстового поля возвращает имя «текстовое поле 1»? – JHSEYMOUR

+0

Я идиот. Я не видел первую часть вашего ответа. Большое спасибо!! – JHSEYMOUR

Смежные вопросы