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

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

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2013, 18:38   #1
umka777_89
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 31
Лампочка VBA Word макрос для вставки слова по первой набранной букве

Как создать макрос, который бы вставлял слово по первой набранной букве?
Например, в определенном месте текста начинаем писать слово "заочник", и если набрали только первые буквы "за", вставляется слово целиком
umka777_89 вне форума Ответить с цитированием
Старый 30.05.2013, 19:10   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

umka777_89, какая у вас версия программы "Word" - 2003, 2007 или другая?
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 19:12   #3
umka777_89
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 31
По умолчанию

Скрипт, версия 2010
umka777_89 вне форума Ответить с цитированием
Старый 30.05.2013, 19:20   #4
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

umka777_89, автоматически сделать то, что вы хотите, не получится. Нужно будет нажимать кнопку или сочетание клавиш на клавиатуре, чтобы слово вставилось.

Предлагаю три варианта:
  1. использование макроса. Вы составите список слов или в самом макросе или в файле на жёстком диске и из этого списка макрос будет брать слово. Допустим вы ввели в документ букву, нажимаете кнопку на панели инструментов или на ленте или нажимаете сочетание клавиш для запуска макроса и макрос вставляет слово;
  2. в программе "Word" есть такое понятие "Автотекст" (начиная с "Word 2007" автотекст относится к "Экспресс-блокам"). Вы добавляете нужное слово в автотекст. Затем набираете текст в документе, нажимаете клавишу "F3" и слово по первым буквам берётся из автотекста;
  3. использование автозамены. Можно, например, для буквы "т" сделать автозамену "текст". При наборе текста в Word-документе, если вы напечатаете букву "т" и нажмёте пробел, буква "т" будет заменена на слово "текст".

Последний раз редактировалось Скрипт; 31.05.2013 в 09:14.
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 19:27   #5
umka777_89
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 31
По умолчанию

Скрипт, а можете привести какой-нибудь простенький пример макроса? Спасибо.
umka777_89 вне форума Ответить с цитированием
Старый 30.05.2013, 19:48   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Код:
Sub Procedure_1()

    Dim myWords(1 To 2) As String
    Dim mySelection As String
    Dim myLen As Long
    Dim i As Long
    
    'Добавляем слова в массив. Массив нужен, чтобы
        'использовать цикл.
    myWords(1) = "текст"
    myWords(2) = "text"
    
    'Помещаем в переменную фрагмент слова, который мы ввели в документ.
        'Переменную используем, чтобы код быстрее работал,
        'чтобы каждый раз в цикле не делать одно и то же - не
        'узнавать какое у нас слово набрано.
    'Selection - это фрагмент документа, где находится курсор.
    'Words(1) - это первое слово в том месте, где находится курсор.
        'Слово берётся справа от курсора, поэтому в курсор не
        'попадает наш текст.
        'В данном случае указывать порядковый номер слова не имеет смысла,
        'т.к. курсор может быть только в одном слове. Несколько слов может
        'быть в объекте "Selection", если выделен фрагмент документа.
        'Но для написания кода в скобках нужно указывать порядковый
        'номер слова.
    'Previous - это предыдущее слово.
    'Text - это текст, который содержится в слове.
    mySelection = Selection.Words(1).Previous.Text
    
    'Помещаем в переменную "myLen" количество символов,
        'которое содержится в нашем фрагменте.
    myLen = Len(mySelection)
    
    'С помощью цикла с "i" просматриваем все слова из массива "myWords".
    For i = 1 To UBound(myWords) Step 1
        
        'Если фрагмент слова из документа совпадает
            'с началом слова из массива.
        If Left(myWords(i), myLen) = mySelection Then
            
            'Вставляем в документ остальную часть слова.
            'С помощью "Mid" берём из элемента массива нужный фрагмент текста.
            'myLen + 1 - это порядковый номер символа,
                'с которого нужно брать текст.
                'Если порядковый номер будет указан больше, чем
                'количество символов в строке, ошибки не произойдёт,
                'просто ничего не произойдёт.
            'У "Mid" есть ещё один параметр - количество символов,
                'которое нужно взять. Если этот параметр не указыать,
                'то берутся все символы до конца строки.
            Selection.TypeText Text:=Mid(myWords(i), myLen + 1)
            
            'Выходим из процедуры, т.к. задача выполнена.
            Exit Sub
            
        End If
        
    Next i

End Sub
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 20:12   #7
umka777_89
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 31
По умолчанию

Скрипт, спасибо за подробную инструкцию))Пробую
umka777_89 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PasteLink - простой макрос на VBA для Excel для вставки в ячейку гипперссылки на файл в буфере обмена. wyfinger Microsoft Office Excel 4 22.05.2013 14:10
Вывести слова предложения в таком порядке, чтобы последняя буква каждого слова совпадала с первой буквой следующего слова ( java ) huhu Помощь студентам 0 06.04.2012 19:42
создать макрос в VBA для документа Word Александра С. Microsoft Office Word 1 17.03.2012 22:52
Упорядочить слова в столбик по первой букве с++ mr_fomin Помощь студентам 0 14.12.2010 16:45
сортировка по первой букве amator_roma Помощь студентам 2 15.11.2010 11:06