Страница: 1 |
Страница: 1 |
Вопрос: VBA.Word. Как найти конец текста
Добавлено: 16.10.07 11:42
Автор вопроса:
Mikle
Помогите пожалуйста!
Как перемещаясь по обычному Word-тексту с помощью команд:
Selection.MoveRight Unit:=wdCharacter, Count:=1 ' ВПРАВО на 1 позицию
…
Selection.MoveDown Unit:=wdLine, Count:=1 ' ВНИЗ на 1 строк
…
If Selection = ????? Then <На обработку конца текста>
Отыскать конец текста?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа: Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #1
Добавлено: 16.10.07 13:07
Что-то вроде этого
Public Sub dd()
Dim i As Integer
ActiveDocument.Sentences(1).Select
i = ActiveDocument.Paragraphs.Count
Selection.MoveDown Unit:=wdLine, Count:=i
End Sub
Номер ответа: 2
Автор ответа: Mikle
Вопросов: 6
Ответов: 5
Профиль | | #2
Добавлено: 16.10.07 14:30
Спасибо за участие!
Программа как бы работает, НО до конца не вытягивает:
ActiveDocument.Sentences(1).Select
i = ActiveDocument.Paragraphs.Count
i=13170, что для моего (конкретного) текста маловато, он наверное на 10-15% длиннее, поэтому:
Selection.MoveDown Unit:=wdLine, Count:=i
до конца не добирается.
Номер ответа: 3
Автор ответа: Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #3
Добавлено: 16.10.07 14:39
Замени
Номер ответа: 4
Автор ответа: Mikle
Вопросов: 6
Ответов: 5
Профиль | | #4
Добавлено: 17.10.07 07:41
Уважаемый Andrew_nik!
Большое спасибо за хорошую идею.
Посредством команд:
ActiveDocument.Sentences(1).Select
i= ActiveDocument.Paragraphs.Count
действительно определится число строк, но не «физических» (что размещаются на листе), а «длинных» (абзацев, Paragraphs – параграфов), заканчивающихся знаком ПС (ASC у которого 13).
Касательно представления целого числа Integer или Long в данном случае «погоды не сделают» (по крайней мере, в моем примере):
Intege позволяет представлять числа со знаком почти до 32 768.
PS: Касательно команды («Вниз»):
Selection.MoveDown Unit=wdLine, Count=1
Хотелось бы иметь представление, может ли выработаться при ее выполнении какой-нибудь сигнал типа: «Предел, выполнение команды невозможно!» или нечто анологичное –когда мы на последней строчке?
Номер ответа: 5
Автор ответа: GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #5
Добавлено: 17.10.07 11:05
Чего-то я не врубился... Зачем MoveDown?..
.Collapse wdCollapseEnd
.Select
End With
Поставит Selection в конец документа... Но, извините, если я что-то напутал.
Номер ответа: 6
Автор ответа: Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #6
Добавлено: 17.10.07 11:45
Перемещение в конец документа Word, используя зарезервированное сочетание клавиш в "Ctrl + End" используя API.
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_KEYUP = &H2
Const VK_CONTROL = &H11
Const VK_END = &H23
Public Sub Go_to_end()
keybd_event VK_CONTROL, 0, 0, 0 ' Нажимаем CTRL
keybd_event VK_END, 0, 0, 0 ' Нажимаем End
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 ' Отпускаем CTRL
keybd_event VK_END, 0, KEYEVENTF_KEYUP, 0 ' Отпускаем End
End Sub
Номер ответа: 7
Автор ответа: Mikle
Вопросов: 6
Ответов: 5
Профиль | | #7
Добавлено: 17.10.07 12:40
With ActiveDocument.Content
.Collapse wdCollapseEnd
.Select
End With
действительно переведет Selection в конец текста, я для этого использую команду:
Selection.EndKey unit:=wdStory
А изначальным вопросом было то, как перемещаясь по тексту («обнюхивая» каждый символ) распознать конец текста?
Команда:
A = Selection.MoveDown(unit:=wdLine, Count:=1)
Переведет указатель на 1 строку вниз, А:= <Истина>, Если строка была последняя, то А:=<Ложь>
Т.е. вопрос вроде бы, как решен.