Консультация № 172272
17.09.2009, 15:46
0.00 руб.
0 2 1
Уважаемые эксперты подскажите, пожалуйста, в следующем: изначально перед запуском макроса был выделен текст, затем макрос с ним производил разные операции, каким образом в Ворде при помощи ВБА организовать выделение текста по окончании макроса.
Пробовал изначально текст сделать закладкой, текст сделать объектом, потом выделить, бывает не корректное выделение.
Спасибо Эндрю


Обсуждение

Неизвестный
19.09.2009, 04:06
общий
это ответ
Здравствуйте, Ципихович Эндрю.
Запоминание положение начала и конца текста выделенного текста не имеет смысла, потому что макрос изменяет содержимое документа, а значит, и положение текста в документе тоже может измениться. Поэтому нужно создавать закладку для выделенного текста, а потом, по окончании работы макроса, эту закладку удалять.
Код:
Sub RestoreSelectionAfterMacros()
Dim oBm As Bookmark 'Переменная для закладки
'Добавляем закладку в документ на место выделенного текста. Имя у закладки может быть любое
Set oBm = ActiveDocument.Bookmarks.Add("SelectedText", Selection.Range)
'Дальше делайте с текстом все, что угодно


'Восстанавливаем выделенный текст
oBm.Range.Select
'Удаляем закладку
oBm.Delete
End Sub
Неизвестный
19.09.2009, 13:14
общий
Витер Александр Анатольевич:
Этот вопрос не простой он из разряда изголения над железом, то есть чисто случайно
наткнулся на эту ситуацию специально так не сделаешь, поясню есть текст изначально было выделено слово
например третье слово в документе "Я" и есть инструкция в коде третье слово в документе = "Он"
И ваш код не годится
У меня есть свой вариант, что Вы думаете об этом? Как же лучше чтобы в стопор не зашло железо?

В начале
Set Объект_согласно_выделенному_изначально_тексту_в_документе = Selection.Range 'создать объект согласно выделенному изначально тексту в документе, чтобы после преобразования документа его выделить
любые строки кода
В конце
ActiveDocument.Range(Start:=Объект_согласно_выделенному_изначально_тексту_в_документе.Start, End:=ActiveDocument.Words(3).End).Select

Форма ответа