Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
Замени
Dim i as integer
на
Dim i as long
. Удачи!

Ответить

Номер ответа: 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-сайт: www.genyaa.nm.ru
 Профиль | | #5
Добавлено: 17.10.07 11:05
Чего-то я не врубился... Зачем MoveDown?..

With ActiveDocument.Content
        .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 строку вниз, А:= <Истина>, Если строка была последняя, то А:=<Ложь>
Т.е. вопрос вроде бы, как решен.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам