Word. Возможно ли определить индекс Rectangles

Программирование на Visual Basic for Applications
bi-lya
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 07.08.2006 (Пн) 15:36

Word. Возможно ли определить индекс Rectangles

Сообщение bi-lya » 27.06.2007 (Ср) 14:53

Использую объектную схему, вроде такого:
Код: Выделить всё
myText = ActiveDocument.ActiveWindow.Panes(1).Pages(a).Rectangles(b).Lines(c).Range.Text

Как определить индекс Rectangles "текстового поля" страницы?
Как я понял, он зависит от наличия колонтитулов. Например: если их нет, индекс - 1, если есть один - 2 (но не всегда),если есть оба - 3.
Использовал
Код: Выделить всё
b = ActiveDocument.ActiveWindow.Panes(1).Pages(а).Rectangles.Count

Но если на странице есть какие-либо рисунки, надписи и т.д. это не работает, т.к. определяется наибольший индекс, а индекс текста зависит только от наличия колонтитулов и не бывает больше 3

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.06.2007 (Ср) 22:43

Мне кажется, тебе стоит сказать, что ты пытаешься сделать на самом деле. А не пытаться сделать это всенепременно через Rectangles.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

bi-lya
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 07.08.2006 (Пн) 15:36

Сообщение bi-lya » 28.06.2007 (Чт) 1:11

В целом моя задача (и я ее решил, в общем-то): вставка в текст в определенное (указанное или найденное) место столбцом необходимого выражения.
Некая программа выдает табличные данные - которые по сути должны быть в таблице - в виде простого текста с моноширинным шрифтом. Вот и стояла задача - в такой "столбец" ввести значение с неопределенным количеством строк. Естественно, чтобы все было красиво и строки были строго друг под другом.
Для этого я задаю Range и после вставки в первую переопределяю его на следующую строку. Для этого мне нужно определять номер символа в строке, номер строки. По идее, если можно обойтись без Rectangles и номеров страниц (они мне не нужны)- да только буду рад

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.06.2007 (Чт) 15:13

Для определения различных мест используется Range.GoTo и Document.GoTo.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

bi-lya
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 07.08.2006 (Пн) 15:36

Сообщение bi-lya » 29.06.2007 (Пт) 3:48

Что-то не въеду, как с GoTo перекинуть Range на строку ниже. Пробовал так - есс-но не то:
Код: Выделить всё
Dim myRange As Range
Set myRange = ActiveDocument.Range(a, b)
myRange.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1
а для переопределения Range нужно использовать SetRange и задавать стартовую и конечную позицию

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.06.2007 (Пт) 16:04

:roll:

Ты тип этой функции смотрел хоть или просто по её имени сделал вывод, что это метод, а не функция?

Код: Выделить всё
  Dim r As Range
 
  Set r = ThisDocument.Range(1, 10) 'Первая строка (10 букв)
 
  Set r = ThisDocument.Range(r.GoTo(wdGoToLine, wdGoToRelative, 1).Start, r.GoTo(wdGoToLine, wdGoToRelative, 2).Start - 1)
  r.Select
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

bi-lya
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 07.08.2006 (Пн) 15:36

Сообщение bi-lya » 30.06.2007 (Сб) 4:38

Спасибо большое, GSerg, разобрался.
Для этого конкретного примера пришлось немного поправить код - вдруг кому что:
Код: Выделить всё
Dim r As Range
 
Set r = ThisDocument.Range(1, 10) 'Первая строка (10 букв)
 
Set r = ThisDocument.Range(r.GoTo(wdGoToLine, wdGoToRelative, 1).Start, r.GoTo(wdGoToLine, wdGoToRelative, 1).Start + 10)

r.Select
Т.к. иначе (при переходе) в Range попадает вся строка без последнего символа.
И еще момент - моя справка выдает только метод GoTo
Самое главное - избавление от Rectangles! Спасибо!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 113

    TopList