Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 16:07   #1
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию быстрый очень быстрый переход в документе

Знатоки, если не трудно, у себя в документах часто в начале нужных абзацов я вставляю закладки, а потом когда мне нужно перейти в определенную часть документа, я нажимаю ctrl+G - выбираю далее нужную закладку-нажимаю ПЕРЕЙТИ и перемещаюсь в нужную часть докумена - а потом еще нажимаю Esc...
набираю текст я 10 пальцами, ну слишком долго это....
Вот и созрела мысль... можно ли, чтобы набрав в любом месте документа название закладки и нажав макрос, я перешел в нужную закладку, а ранее набранный текст автоматом был бы удален...посмотрите еще приложеный файл...
Вложения
Тип файла: doc пример.doc (31.5 Кб, 13 просмотров)
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 17.11.2010, 16:53   #2
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Вот такое придумал:
Код:
Sub Макрос3()
Dim vИмяЗакладки As String
metka:
    vИмяЗакладки = InputBox("Введите имя закладки")
    If vИмяЗакладки = "" Then Exit Sub
    If ActiveDocument.Bookmarks.Exists(vИмяЗакладки) = False Then
        MsgBox "Неправильно указано имя закладки"
        GoTo metka
    End If
    Selection.GoTo What:=wdGoToBookmark, Name:=vИмяЗакладки
End Sub
forumWord вне форума Ответить с цитированием
Старый 17.11.2010, 17:04   #3
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Вот такой ещё вариант. Печатаешь имя закладки, а затем запускаешь марос:
Код:
Sub Макрос4()
Dim vИмяЗакладки As String
vИмяЗакладки = Selection.Words(1).Previous.Words(1)
If ActiveDocument.Bookmarks.Exists(vИмяЗакладки) = True Then
    Selection.Words(1).Previous.Words(1).Delete
    Selection.GoTo What:=wdGoToBookmark, Name:=vИмяЗакладки
Else
    MsgBox "Такой закладки нет"
End If
End Sub
forumWord вне форума Ответить с цитированием
Старый 17.11.2010, 17:45   #4
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

При использовании этого кода, надо сначала поставить пробел, затем напечатать имя закладки, а затем запустить макрос. Этот код создан для случаев, когда в имени закладки встречается символ "_":
Код:
Sub Макрос6()
Dim vИмяЗакладки As String
Do While InStr(Selection.Text, " ") = 0
    Selection.MoveLeft unit:=wdWord, Extend:=wdExtend
Loop
vИмяЗакладки = Trim(Selection.Text)
If ActiveDocument.Bookmarks.Exists(vИмяЗакладки) = True Then
    Selection.Delete
    Selection.GoTo What:=wdGoToBookmark, Name:=vИмяЗакладки
Else
    MsgBox "Такой закладки нет"
End If
End Sub
forumWord вне форума Ответить с цитированием
Старый 17.11.2010, 17:51   #5
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию

Спасибо, долго добивался этих макросов...оба макроса хороши...если можно - чтобы в первом макросе при вводе закладки я попадал в начало закладки, а не чтобы она выделялась...
Что касается второго макроса: есть у меня, например в документе предложение: "Украина - наша родина", так вот ставлю курсор перед словом "родина", далее ввожу название закладки, например "аа" , получается "аародина" потом нажимаю макрос и попадаю в начало нужной закладки, при этом сочетание "аа" удаляется)..
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 17.11.2010, 18:06   #6
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Окоча Юра, нужно пробел ставить перед вставкой имени закладки. Лучше используйте третий код.
forumWord вне форума Ответить с цитированием
Старый 17.11.2010, 18:38   #7
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию

я понял..спасибо за 3-ий макрос...если можно в 1 и 3 макросе сделать чтобы когда я нажму макрос я переходил в начало нужной закладки (тоисть был активным пробел перед этой закладкой)..
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 17.11.2010, 18:54   #8
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Окоча Юра, вот это
Код:
Selection.MoveLeft
надо поместить после
Код:
Selection.GoTo What:=wdGoToBookmark, Name:=vИмяЗакладки
forumWord вне форума Ответить с цитированием
Старый 17.11.2010, 19:03   #9
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 377
По умолчанию

Развил идею (см. комментарии):
Код:
Public Sub Bookmark_TypedGo()
' переход к закладке по имени набранному в документе
' - если выбран текст, то считаем его именем
' - ничего не выбрано, то имя перед курсором,
'   начиная с начала абзаца или заданного символа

Const c_StartChars$ = " >" ' набор символов начала закладки

Dim R As Range
Dim N$
Dim L&
    
    ' область имени закладки
    Set R = Selection.Range
    If R.Start < R.End Then
        ' уже выбрана
        N = R.Text ' имя
    Else
        ' перед курсором
        L = R.Paragraphs.First.Range.Start - R.Start
        If R.MoveStartUntil(Cset:=c_StartChars, Count:=L) < 0 Then
            N = R.Text ' имя
            R.MoveStart Unit:=Word.wdCharacter, Count:=-1
        Else
            R.MoveStart Unit:=Word.wdCharacter, Count:=L
            N = R.Text ' имя
        End If
    End If
    N = Trim$(N) ' чистим имя
    
    ' ищем закладку
    If ActiveDocument.Bookmarks.Exists(N) <> True Then
        ' нет закдаки
        StatusBar = "Нет закладки c именем """ & N & """"
    Else
        ' удаляем имя
        L = R.Characters.Count
        R.Collapse Direction:=Word.wdCollapseStart
        R.Delete Unit:=Word.wdCharacter, Count:=L
        ' переход к закладке
        ActiveDocument.Bookmarks(N).Range.Select
        Selection.Collapse Direction:=Word.wdCollapseStart
    End If
    
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 17.11.2010, 19:05   #10
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Цитата:
при этом сочетание "аа" удаляется)..
у меня есть защита в коде от удаления нужного:
Код:
ActiveDocument.Bookmarks.Exists(vИмяЗакладки) = True
Не может ничего удалится, если не является именем закладки. Значит есть такая закладка "аародина".

Да, и получается, что и перед и после (если имя закладки не является последним словом в абзаце) должны быть пробелы.

Последний раз редактировалось forumWord; 17.11.2010 в 19:09.
forumWord вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
быстрый переход в закладку Окоча Юра Microsoft Office Word 15 11.04.2011 16:53
Быстрый парсинг картинки JDredd C++ Builder 13 09.02.2011 21:30
Самый быстрый браузер Marsel737 Софт 31 30.08.2010 01:09
Быстрый запуск. Chudo4258 Помощь студентам 4 09.04.2010 20:30
Быстрый перевод сайта ! Slappy Помощь студентам 0 24.01.2010 16:09