Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > VBA For Word


Автор: Гость_Temp 11.8.2003, 21:47
Делаю так:
Код
Wrd.Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & vbCrLf & "av. Aseerte, 123"

мне надо чтоб он слово [address] заменил на две строки, но вместо перевода строки (vbCrLf) вижу два квадратика. Почему? Что мне делать? Может вместо vbCrLf уникод символ какой-нить надо? Помоите пожалуйста! Очень благодарен!

Автор: Alles 12.8.2003, 04:04
Wrd.Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & Chr(13) & Chr(13) & "av. Aseerte, 123"

Автор: Гость_Temp 13.8.2003, 06:12
Цитата
Wrd.Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & Chr(13) & Chr(13) & "av. Aseerte, 123"

Не работает... sad.gif Может как-нибудь по другому?

Автор: -Mikle- 13.8.2003, 07:23
Попытался найти ответ и-и-и.... мне это тоже интересно стало... Какой же код символа переноса строки у Word? Кто знает?

Автор: cardinal 13.8.2003, 09:00
Код
Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & Chr(13) & Chr(13) & "av. Aseerte, 123"


Так все же правильно! Зачем тут два раза Chr(13) я не понял, но это не суть. Код символа переноса строки это 13.

Автор: Alles 13.8.2003, 09:00
Хм... , а может вот так Selection.TypeParagraph вот это точно строку переводит в Ворде!

Автор: Alles 13.8.2003, 09:10
Да ...... cardinal прав это мой касяк я просто запарился и воткнул туда два 13 я почемуто подумал что ... да ладно проехали там должен быть один перевод. Но Ворд действительно себя странно ведет при таком переводе ! у меня например пропадает кнопка в которой прописан перевод , а курсор где стоял там и стоит , а вот с этим Selection.TypeParagraph все ОК.

Код
Wrd.Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & Selection.TypeParagraph & "av. Aseerte, 123"

Автор: Alles 13.8.2003, 09:53
Нет я помоему не прав ! Selection.TypeParagraph в этом блоке не работает !
Автор : ты помоему что-то намудрил

Selection.Text = "Country" & Chr(13) & "av. Aseerte, 123" вот так все работает !

Ты ищешь слово по документу и заменяешь его ??!!

Selection.Find.ClearFormatting
With Selection.Find
.Text = "address"
.Replacement.Text = ""

End With
Selection.TypeParagraph
Selection.Text = "Country" & Chr(13) & "av. Aseerte, 123"
Selection.Find.Execute
End Sub

Может ты вот так попробуешь ?

Автор: Гость_Temp 13.8.2003, 16:56
Selection.TypeParagraph - это метод, он знает как переводить строку.
Вся беда в том, что вообще, то что я написал в вопросе, работает. Не работает это в случае если [address] стоит в последней строке в ячейке таблицы. Если поставить знак переноса после него (т.е. сделать так чтоб он был не в последней строке ячейки), то все работает. Но ведь ворд как-то может ставить перенос строки, даже если слово в последней строке ячейки. Как он это делает? Какой же символ переносит строку независимо от того, где она находится?

Автор: Alles 14.8.2003, 04:19
Да ...кому как , но я органически не выношу когда в ворде работают с таблицами и на работе у себя постоянно воюю с персооналом. А вообще системный перевод строки это Chr(13) ...... это как соль ! она соленая и все тут !!!
Странно ! у меня все работает независимо где в таблице стоит искомая строка.

Автор: Гость_Temp 14.8.2003, 06:05
В Word сделана Счет-фактура. Для того чтобы разметить в каких областях листа, что находиться, я использую таблицу без видимых границ. Вообще весь файл - это шаблон. Потом, из VB, я работаю с этим шаблоном, т.е. ищу метасимволы, и заменяю их на соответствующие значения из прораммы. Но если метасимвол в последней строке ячейки, то он не хочет переносить строку. В других местах переносит, а тут нет. sad.gif

Автор: cardinal 14.8.2003, 15:55
Да, прикольно... А разница между "software enter" и "hardware enter" оказывается есть.
Код
Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & vbVerticalTab & "av. Aseerte, 123"
SendKeys "{RIGHT}", True

А в MSDN вообще написано, что нам эта константа не пригодится,
Цитата
Vertical tab; not useful in Microsoft Windows

а она пригодилась smile.gif

Автор: Гость_Temp 14.8.2003, 16:58
cardinal, ты молодец!!! Как я не догадался? Спасибо ОГРОМНОЕ за потраченое на меня время! Ты очень помог мне!!! Моя человеческая благодарность тебе! СПА-СИ-БО!!!

Автор: Гость_Temp 14.8.2003, 17:01
Также огромное СПАСИБО Alles'у! Который потратил не меньше времени на меня!

Автор: Alles 15.8.2003, 02:21
Ну блин ...век живи век учись smile.gif)) cardinal - тебе по рейтингу +10 .

Автор: -Mikle- 15.8.2003, 06:10
Да, cardinal... хорошее дело сделал! Интересно, сколько тебе лет?
Alles, согласен с тобой... кардиналу +10 по рейтингу, даже больше можно... smile.gif
Temp, я надеюсь ты теперь зарегистрируешься smile.gif ?

Автор: hobotyara 15.8.2003, 09:58
Стандартный перевод строки состоит из двух символов Chr(10) & Chr(13).

По идее должно работать

Wrd.Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & Chr(10) & Chr(13) & "av. Aseerte, 123"

Автор: cardinal 17.8.2003, 17:58
hobotyara, во первых стандартный перевод строки состоит из двух символов Chr(13) & Chr(10), а во вторых ты первое сообщение в этой теме читал?

Цитата
-Mikle-: Интересно, сколько тебе лет?

-Mikle-, а почему интересно? smile.gif

Автор: hobotyara 18.8.2003, 11:08
cardinal, я их использовал внутри MsgBox. Сейчас посмотрел 4 варианта,
Chr(10)
Chr(13)
Chr(10) & Chr(13)
Chr(13) & Chr(10)
работают одинаково

Проблема в том что Ворд Chr(10) не воспринимает.

Автор: cardinal 18.8.2003, 11:19
Цитата
Гость_Temp: Вся беда в том, что вообще, то что я написал в вопросе, работает. Не работает это в случае если [address] стоит в последней строке в ячейке таблицы.


Цитата
cardinal: Selection.Find.Execute FindText:="[address]", ReplaceWith:="Country" & vbVerticalTab & "av. Aseerte, 123"
SendKeys "{RIGHT}", True


вопрос уже решен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)