1

Тема: Запись макроса макрорекодером

Здравствуйте,
Прошу помощи в такой проблеме:
В списке нужно поменять части текста каждой строки местами с помощью макроса, записанного ТОЛЬКО МАКРОРЕКОДЕРОМ. Части текста, которые нужно заменить, различные по длине и при выполнении макроса смещаются. Для решения этой проблемы в задаче предложена расстановка табуляции. Я установила табуляцию, но все равно замена по строкам не выходит, строки смещаются наезжают одна на другую.
Подскажите, как выделять и перемещать части текста при записи макроса, так как подозреваю, что моя проблема именно в неправильных манипуляциях при записи.
Файл со списком прилагаю.
Заранее благодарна за помощь

получиться должно так: Луценков І.Н. (0544) 275645

Post's attachments

СПИСОК 1.docx 15.01 Кб, 3 скачиваний с 2013-02-22 

You don't have the permssions to download the attachments of this post.

2

Re: Запись макроса макрорекодером

Сочетания клавиш Word. Думаю будет полезно.

Например перемещаться по стокам и абзацам можно так:

CTRL+RIGHT - переход к следующему слову
CTRL+DOWN - переход к абзацу ниже
RIGHT - переход на позицию вправо
F8 (нажать два раза) - выделить слово целиком (для отмены режима выделения нажмите ESC)

Примечание - Вообще F8 - это включение режима выделения. При двойном нажатии F8 выделяется слово целиком и пробел за ним, поэтому нажмите LEFT, чтобы убрать выделение пробела. Затем нажмите ESC, чтобы выключить режим выделения. Далее копировать выделенное слово (CTRL+C). Далее перемещения по строке и вставка (CTRL+V) в нужном месте. Вроде так...

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

3

Re: Запись макроса макрорекодером

Здравствуйте,

Прилагаю решение для преобразования первого списка.
Использование ТОЛЬКО МАКРОРЕКОДЕРА - это существенное ограничение. Иначе можно было бы, например, применить цикл.
В данном решении цикл не используется.

Sub Макрос1()
'
    ' Найти слова Список 1
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "Список 1"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 1 из 13 первого списка
    ' Перемещение курсора в конец строки
    Selection.EndKey Unit:=wdLine
    ' Выделение ФИО
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    ' Вырезание ФИО
    Selection.Cut
    ' Удаление табуляции или пробела
    Selection.TypeBackspace
    ' Переход на начало строки
    Selection.HomeKey Unit:=wdLine
    ' Вставка ФИО
    Selection.Paste
    ' Вставка табуляции
    Selection.TypeText Text:=vbTab
    ' Выделение номера телефона
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    ' Вырезание номера телефона
    Selection.Cut
    ' Удаление табуляции или пробела
    Selection.Delete Unit:=wdCharacter, Count:=1
    ' Перемещение курсора в конец строки
    Selection.EndKey Unit:=wdLine
    ' Вставка номера телефона
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 2 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 3 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 4 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 5 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 6 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 7 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 8 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 9 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 10 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 11 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 12 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    
    ' Перемещение слов в строке 13 из 13 первого списка
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdLine
    Selection.Paste
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine
    Selection.Paste
    
    ' Перемещение к началу следующей строки
    Selection.MoveDown Unit:=wdParagraph, Count:=1
End Sub

Для второго списка составьте решение сами.
Вам нужно сделать с включенным макрорекордером следующие действия:
1) Найти слова "Список 2"
2) Перемещение курсора к началу следующей строки
3) Перемещение курсора в конец строки
4) Выделение ФИО
5) Вырезание ФИО
6) Удаление табуляции или пробела
7) Переход на начало строки
8) Вставка ФИО
9) Вставка табуляции
10) Выделение номера телефона
11) Вырезание номера телефона
12) Удаление табуляции или пробела
13) Перемещение курсора в конец строки
14) Вставка номера телефона
15) Перемещение к началу следующей строки

Все действия по перемещению данных в строке нужно повторить 16 раз (столько раз, сколько строк во втором списке).

Если будут вопросы - пишите.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.