2016-08-19 7 views
1

Я получил следующий код:Слово VBA формы с помощью элемента

Sub removeTopAndBottomMostShapesFromActiveDocument() 

Dim shape As shape 
Dim topShape As shape 
Dim bottomShape As shape 

Dim pageNum 
For pageNum = 1 To ActiveWindow.Panes(1).Pages.Count 

    Dim highestPoint, lowestPoint 
    highestPoint = 999999 
    lowestPoint = -999999 

    Set topShape = Nothing 
    Set bottomShape = Nothing 

    Dim sr As ShapeRange 
    Set sr = ActiveWindow.Panes(1).Pages(pageNum).Rectangles.Item(1).Range.ShapeRange 
    sr.Select 
    For Each shape In sr 
     If shape.Top < highestPoint Then 
      Set topShape = shape 
      highestPoint = shape.Top 
     End If 
     If shape.Top + shape.Height > lowestPoint Then 
      Set bottomShape = shape 
      lowestPoint = shape.Top + shape.Height 
     End If 
    Next 

    If Not topShape Is Nothing Then 
     topShape.Delete 
    End If 
    If Not bottomShape Is Nothing Then 
     bottomShape.Delete 
    End If 

С Set sr = Activewindow ... Я не могу понять, что .item(1) делает. У меня есть текстовые поля в документе Word, которые все одинаковы. На некоторых страницах .item(1) выдает sr.count из «0», но если я перейду на .item(2) или .item(3), текстовые поля будут найдены на определенной странице. Любая помощь будет оценена по достоинству.

ответ

0

Я предполагаю, что нашел обходное решение. По какой-то причине текстовые поля размещаются в разных элементах, даже если они созданы одним и тем же процессом. Если кто-то может это объяснить, я был бы благодарен. Таким образом, решение состоит в создании цикла с .Item (i) от 1 до 3, который захватывает все поля на страницах и, кажется, работает без проблем.

0

Есть прочитанный пункт-здесь:

http://shaunakelly.com/word/word-development/selecting-or-referring-to-a-page-in-the-word-object-model.html

Мы сделали много работы с словом в последнее время, и он ведет себя, как говорится в статье в этом Слове и страница не идет хорошо вместе.

Это. Элементы (1) должны содержать все прямоугольники на этой странице, но я подозреваю, что это путает страницы (имея в виду каждый раз, когда вы удаляете форму, весь документ будет перемещаться и фигуры, которые были на одной странице теперь будет по другому).

Я также задал бы вопрос о действительности того, что вы пытаетесь сделать. Если у одного человека есть гораздо более высокое разрешение, чем у другого, предположительно формы, которые были сверху и снизу страницы на одном компьютере, возможно, не были на машине других лиц.