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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2012, 16:46   #1
Njos
Новичок
Джуниор
 
Регистрация: 26.12.2012
Сообщений: 3
Радость VBA Word 2 простых(не для меня) задания:)

Задание следующее:
1. В текстовом документе найти первое слово, начинающееся на гласную букву.
2. В текущем абзаце выделить предложение, содержащее наименьшее количество слов.

Сказали текст можно брать любой!

Заранее благодарен!!! Если можно написать макрос(ы) полностью, пожалуйста! VBA еще не изучил как следует(простите, за моё бездельничество), к сожалению завтра последний день сдачи заданий по VBA(яудент), сдать бы хотябы на 3(2 задания на 3-ку). Если если желание помоч получить 4-ку то посмотрите, пожалуйста, вот это:
3. В текущем абзаце выделить самое маленькое слово.
4.В текущем абзаце в самом коротком слове самого короткого предложении поменять порядок следования букв на обратный.
Буду признателен к тем кто выручит!!!

Последний раз редактировалось Njos; 26.12.2012 в 17:12. Причина: ошибки, дополнение
Njos вне форума Ответить с цитированием
Старый 26.12.2012, 17:38   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Кое-что можете здесь найти: Макросы VBA Word

Цитата:
Сообщение от Njos Посмотреть сообщение
Задание следующее:
1. В текстовом документе найти первое слово, начинающееся на гласную букву.
Там (по ссылке) это есть для документа Word — но только для основного текста).

Последний раз редактировалось Sasha_Smirnov; 26.12.2012 в 17:41.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 27.12.2012, 04:30   #3
Njos
Новичок
Джуниор
 
Регистрация: 26.12.2012
Сообщений: 3
По умолчанию

Там уже был, нечего не понял, куда это вставлять.
Njos вне форума Ответить с цитированием
Старый 27.12.2012, 22:47   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Да как обычно — в окно поиска (сочетание клавиш Ctrl-h); там отметить флажком подстановочные знаки, затем включить запись и нажать кнопку "Найти"; запись остановить и по Alt-F11 (и потом, возможно, Ctrl-R) взять записанный код.

Пока сам не попробуешь...
Sasha_Smirnov вне форума Ответить с цитированием
Старый 28.12.2012, 04:03   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Текст любой

Код:
Option Explicit     'это просто полезно (объявлять все переменные)
Option Compare Text 'это принципильно важно для оператора Like


Sub ПеревернутьКратчайшееСлово()
Dim S, W, minS, minW, nS, nW: nS = 1 ': nW = 1

minS = 1000: minW = 1000 'задали заведомо большие числа (чтоб их уменьшать)
Selection.Expand wdParagraph 'расширили выделение на весь текущий абзац

    With Selection.Range    'работаем в выделенном (абзаце)
    
        For S = 1 To .Sentences.Count                           'перебор предложений
         .Sentences(S).Select       'предложение номер S выделено
                If Selection.Characters.Count < minS Then 'число символов < прежнего
                    minS = Selection.Characters.Count
                    'обновили минимум длины предложения
                    nS = S 'запомнили номер "мимиального" предложения
                End If
         
             With Selection.Range       'работаем в выделенном (предложении)
                    For W = 1 To .Words.Count                   'перебор слов
                    .Words(W).Select    'слово номер W выделено
            'СЛОВО может и не быть словом - пройдёмся по его символам (функция IsLikeAword)
                        If IsLikeAword(Selection.Text) Then
                            If Selection.Characters.Count < minW Then
                                    minW = Selection.Characters.Count
                                    'обновили минимум длины слова
                                    nW = W 'запомнили номер мимиального слова
                            End If
                        End If
                    Next                            'конец перебора слов
                    If nW = 0 Then MsgBox "В этом абзаце слов не обнаружено.": Exit Sub
            End With
        Next                                        'конец перебора предложений
    
    If MsgBox("1-е самое короткое слово самого короткого предложения, " & _
            "найденного в текущем абзаце, это «" & Trim(.Words(nW)) & "»." & _
            vbCr & vbCr & IIf(Len(Trim(.Words(nW))) > 1, "Перевернуть?", "Да?"), vbYesNo, _
            "Выбор верного пути") = vbYes Then
        MsgBox StrReverse(Trim(.Words(nW)))
    End If
    End With
End Sub


Function IsLikeAword(ByRef q As String) As Boolean
'Исходит из того, что Word делит текст на "слова" (члены семейсва Words) по разделителям,
'которые (если это не обычные пробелы с кодом 32) и сами входят в число этих самых Words.
'q = Replace(q, Chr(39), " ") 'заменяет ‹'› на пробел - иначе ‹'› включается в "слово"(!)
Dim i
    For i = 1 To Len(q)
    If Mid(q, i, 1) Like "[! A-ZА-Я ]" Then Exit Function 'найдя не пробел и не букву - вышли
    Next
IsLikeAword = True
End Function
Примечание: после Я пробел не обычный (а неразрывный [код 0160, набирать зажав левый Alt]) — но сюда он не импортируется; впрочем, много чего недодумано, всего не учесть!

В целом программа полна загадок, но она работает:
Изображения
Тип файла: jpg runtime-2012.jpg (42.3 Кб, 149 просмотров)

Последний раз редактировалось Sasha_Smirnov; 28.12.2012 в 04:32.
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA задания VtankePanda Помощь студентам 0 23.05.2012 14:23
создать макрос в VBA для документа Word Александра С. Microsoft Office Word 1 17.03.2012 22:52
VBA Word,VBA Excel решить 2 задачи fafolo4ka Фриланс 6 05.03.2012 01:15
Программа для поиска простых, простых парных и взаимнопростых чисел in da fly Помощь студентам 1 26.05.2011 23:30
макровирусы в VBA для MS word, Excel Aleksa_ks Помощь студентам 0 07.12.2010 14:41