Word: вставка текста в документ

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

Word: вставка текста в документ

Сообщение bi-lya » 07.08.2006 (Пн) 16:05

Есть необходимость "перескочить" от найденного в тексте символа ИЛИ на некоторое количество символов вправо (при этом не затирая существующих символов) ИЛИ также от найденного символа опуститься на строку ниже и вставить содержимое TextBox'а

Пытался делать так:

Dim a as String * 10

a = TextBox1.Text

Selection.Find.ClearFormatting
With Selection.Find
.Text = "#1"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.Text = a

Это не работает. Вставляется в зависимости от положения курсора

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.08.2006 (Пн) 17:00

Вопрос к автору - почему он думает что MoveLeft двигает селекшен вправо?

Это раз. И потом, надо после поиска делать Selection.Collapse wdCollapseEnd и будет счастье. Наверное.

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

Сообщение bi-lya » 08.08.2006 (Вт) 0:04

RayShade, затем, что мне надо чтобы начало нижней строки (на которую пререхожу) должно быть четко под началом найденных символов

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 08.08.2006 (Вт) 11:13

Хм. Зачем - это ясно. Но MoveLeft, двигает селекшен все таки влево.

И потом, Selection ведет себя как курсор в Word. То есть, переход на новую строку всегда отправляет его в ее начало.

Попробуй тогда, считать расстояние от левого края до найденного символа и после сдвига на новую строку, делать MoveRight на это расстояние :)

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

Сообщение bi-lya » 09.08.2006 (Ср) 13:04

Не получается ничего с Move' ми... Может есть такие функции, которыми можно определить номер строки, на котором находится найденный символ от начала текста, и затем вставить на следующую строку нужное выражение, или же вычислить номер найденного символа и к нему привязать вставляемое на строку ниже значение?

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

Сообщение GSerg » 09.08.2006 (Ср) 20:09

Разбиение на строки чисто визуальное, и, хотя "такие функции" есть, надо не использовать их, потому что при изменении ширины страницы, к примеру...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.08.2006 (Чт) 12:30

... случится что то настолько страшное, что об этом даже нельзя написать вслух ...

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

Сообщение bi-lya » 12.08.2006 (Сб) 9:18

GSerg, дело в том, что у меня количество символов во всех строках одинаковое и в конце каждой строки стоит знак абзаца, поэтому можно было бы этим воспользоваться

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

Сообщение bi-lya » 13.08.2006 (Вс) 8:36

Должен с удовлетворением заявить, что все получилось. Использовал метод Range.Move & wdCharakter & Left c Right'ом. Спасибо всем принявшим участие!!! :D


Вернуться в VBA

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

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

    TopList