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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2015, 18:37   #1
мария945
Новичок
Джуниор
 
Регистрация: 03.12.2015
Сообщений: 1
Вопрос макрос, который переставляет абзацы

Суть задания такова, разработать макрос для документа мс ворд для запуска макроса зарезервировать горячую клавишу. абзацы с четным количеством слов перенести в начало документа. Кажется здесь с этим справляются легко, а для меня VBA штука незнакомая

Последний раз редактировалось мария945; 10.12.2015 в 18:42.
мария945 вне форума Ответить с цитированием
Старый 12.12.2015, 05:59   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Философский вопрос

С английским-то, думаю, знакомы. Вот цитата из справки VBE с кодом как раз для вас.

Цитата:
This example displays the number of words and characters in the first paragraph of Report.doc.

Код:
Set myRange = Documents("Report.doc").Paragraphs(1).Range
wordCount = myRange.ComputeStatistics(Statistic:=wdStatisticWords)
charCount = _
    myRange.ComputeStatistics(Statistic:=wdStatisticCharacters)
MsgBox "The first paragraph contains " & wordCount _
    & " words and a total of " & charCount & " characters."
Вообще, мария945, это сугубо учебное задание: за 28 лет я ни разу такого вопроса на работе не решал (да его там и не стояло: мало кто знает, что есть VBA!)

Вот запись макроса (лишнее убрал):
Код:
Sub Макрос7() ' Макрос записан 12.12.15
    NormalTemplate.AutoTextEntries.AppendToSpike Range:=Selection.Range
    Selection.HomeKey Unit:=wdStory
    With NormalTemplate.AutoTextEntries("Копилка")
        .Insert Where:=Selection.Range, RichText:=True
    End With
End Sub
Здесь отражены (благодаря макрорекордеру Word) те манипуляции, что на работе обычно делают без всяких макросов: вырезают (по Ctrl-F3) и затем в нужное место (в данном случае в начало) вставляют (по Ctrl-Shift-F3).

Ещё за 20 минут тему посмотрели 10 человек (61→71), а у меня под утро созрело следующее:
Код:
Sub ПарыНаверх()
Dim abz As Paragraph

For Each abz In ActiveDocument.Paragraphs
    If abz.Range.ComputeStatistics(wdStatisticWords) Mod 2 = 0 Then _
        NormalTemplate.AutoTextEntries.AppendToSpike Range:=abz.Range
Next

    Selection.HomeKey Unit:=wdStory
    With NormalTemplate.AutoTextEntries("Копилка")
        .Insert Where:=Selection.Range, RichText:=True
    End With
End Sub
Слово за вами, мария945 и мария954!

Последний раз редактировалось Sasha_Smirnov; 13.12.2015 в 00:00. Причина: ответ на вопрос.
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно написать макрос Екатерина2808 Microsoft Office Word 1 23.06.2015 02:51
Нужно написать макрос SYS1982 Microsoft Office Excel 10 02.06.2014 22:48
Нужно написать макрос 30gb Microsoft Office Excel 1 23.10.2012 15:34
Нужно написать макрос Nix128 Microsoft Office Excel 12 16.04.2011 20:26
Нужно написать макрос lolk Microsoft Office Word 5 27.03.2011 07:13