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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2019, 14:06   #1
Макс20777
Новичок
Джуниор
 
Регистрация: 08.01.2019
Сообщений: 4
Смущение Не могу собрать два простых макроса

Люди, помогите, пожалуйста, чайнику...
У меня есть два макроса: первый
[CODE]
Код:
Sub bb()
'исключаемые слова - через пробел, в начале и в конце пробел!
Const EXCL = " здравствуйте нужен следующий макрос что бы из документа случайным "
 
Dim s$(0 To 1), i&, n&
n = ActiveDocument.Words.Count - 1
For i = 1 To 1
    Do
        s(i) = Trim(ActiveDocument.Words(1 + Rnd * n))
    Loop Until Len(s(i)) > 1 And InStr(1, EXCL, " " & s(i) & " ", vbTextCompare) = 0
Next
Selection.TypeText Join(s, Chr(9))
End Sub
вставляет в указанное курсором место случайное слово из всего текста документа - работает замечательно.

Второй макрос:
Код:
Sub скрытие()
'
' скрытие Макрос
'
'
    With Selection.Font
        .Name = "Times New Roman"
        .Size = 1
        .Bold = False
        .Italic = False
        .Underline = wdUnderlineNone
        .UnderlineColor = wdColorAutomatic
        .StrikeThrough = False
        .DoubleStrikeThrough = False
        .Outline = False
        .Emboss = False
        .Shadow = False
        .Hidden = False
        .SmallCaps = False
        .AllCaps = False
        .Color = -603914241
        .Engrave = False
        .Superscript = False
        .Subscript = False
        .Spacing = -5
        .Scaling = 1
        .Position = 0
        .Kerning = 0
        .Animation = wdAnimationNone
        .Ligatures = wdLigaturesNone
        .NumberSpacing = wdNumberSpacingDefault
        .NumberForm = wdNumberFormDefault
        .StylisticSet = wdStylisticSetDefault
        .ContextualAlternates = 0
    End With
End Sub
Форматирует выделенное слово под заданные параметры - тоже работает замечательно.
А вот ВМЕСТЕ они никак не хотят работать...
Как мне "собрать" эти два макроса в один так, чтобы слово, которое нашел первый макрос сразу же (автоматически) форматировалось так, как указано во втором макросе..
Пытался играться с операторами Select, Select...Case, пробовал соединить третьим макросом через операторы Call - ничего не вышло.
Как уже указывал, я еще полный чайник - помогите, пожалуйста!!!

Последний раз редактировалось Макс20777; 08.01.2019 в 15:01.
Макс20777 вне форума Ответить с цитированием
Старый 08.01.2019, 21:36   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Так пробовали?
Код:
Sub bb()
    'исключаемые слова - через пробел, в начале и в конце пробел!
    Const EXCL = " здравствуйте нужен следующий макрос что бы из документа случайным "
 
    Dim i&, n&
    Dim str As String
    n = ActiveDocument.Words.Count - 1
    Do
        str = Trim(ActiveDocument.Words(1 + Rnd * n))
    Loop Until Len(str) > 1 And InStr(1, EXCL, " " & str & " ", vbTextCompare) = 0
    
    With Selection
        .TypeText str
        With .Font
            .Name = "Times New Roman"
            .Size = 7
            .Bold = False
            .Italic = False
            .Underline = wdUnderlineNone
            .UnderlineColor = wdColorAutomatic
            .StrikeThrough = False
            .DoubleStrikeThrough = False
            .Outline = False
            .Emboss = False
            .Shadow = False
            .Hidden = False
            .SmallCaps = False
            .AllCaps = False
            .Color = -603914241
            .Engrave = False
            .Superscript = False
            .Subscript = False
            .Spacing = -5
            .Scaling = 1
            .Position = 0
            .Kerning = 0
            .Animation = wdAnimationNone
            .Ligatures = wdLigaturesNone
            .NumberSpacing = wdNumberSpacingDefault
            .NumberForm = wdNumberFormDefault
            .StylisticSet = wdStylisticSetDefault
            .ContextualAlternates = 0
        End With
    End With
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 08.01.2019, 23:54   #3
Макс20777
Новичок
Джуниор
 
Регистрация: 08.01.2019
Сообщений: 4
По умолчанию

Попробовал - слово вставляется, но не форматируется... Я предполагал, что это связано с тем, что необходимо какой-либо функцией "выделить" его, но так и не нашел КАК это сделать...
Макс20777 вне форума Ответить с цитированием
Старый 09.01.2019, 07:02   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Странно, этот код у меня вставлял слово и менял его параметры. как вариант попробуйте .typetext строку вставить между end with
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 09.01.2019, 10:05   #5
Макс20777
Новичок
Джуниор
 
Регистрация: 08.01.2019
Сообщений: 4
По умолчанию

Не выходит... В любом случае спасибо за помощь!
Изображения
Тип файла: jpg Безымянный.jpg (68.3 Кб, 135 просмотров)
Макс20777 вне форума Ответить с цитированием
Старый 09.01.2019, 11:25   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

В таком случае, удачи в поиску решения.
Код:
Sub bb()
    'исключаемые слова - через пробел, в начале и в конце пробел!
    Const EXCL = " здравствуйте нужен следующий макрос что бы из документа случайным "
 
    Dim i&, n&
    Dim str As String
    n = ActiveDocument.Words.Count - 1
    Do
        str = Trim(ActiveDocument.Words(1 + Rnd * n))
    Loop Until Len(str) > 1 And InStr(1, EXCL, " " & str & " ", vbTextCompare) = 0
    
    With Selection
        
        With .Font
            .Name = "Times New Roman"
            .Size = 1
            .Bold = False
            .Italic = False
            .Underline = wdUnderlineNone
            .UnderlineColor = wdColorAutomatic
            .StrikeThrough = False
            .DoubleStrikeThrough = False
            .Outline = False
            .Emboss = False
            .Shadow = False
            .Hidden = False
            .SmallCaps = False
            .AllCaps = False
            .Color = -603914241
            .Engrave = False
            .Superscript = False
            .Subscript = False
            .Spacing = -5
            .Scaling = 1
            .Position = 0
            .Kerning = 0
            .Animation = wdAnimationNone
            .Ligatures = wdLigaturesNone
            .NumberSpacing = wdNumberSpacingDefault
            .NumberForm = wdNumberFormDefault
            .StylisticSet = wdStylisticSetDefault
            .ContextualAlternates = 0
        End With
        .TypeText str
    End With
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 09.01.2019, 15:05   #7
Макс20777
Новичок
Джуниор
 
Регистрация: 08.01.2019
Сообщений: 4
По умолчанию

ОГРОМНОЕ спасибо - работает!!! Говорил же - я еще чайник
Макс20777 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединить два макроса Kraimon Microsoft Office Excel 8 24.02.2014 15:41
Два простых пароля StudentMarat Помощь студентам 3 24.05.2012 13:34
Два простых вопроса skvair C++ Builder 4 31.01.2012 22:28
Два довольно простых вопроса про контроль данных Max_Grinyuk Помощь студентам 22 12.06.2009 08:48
Два простых вопроса Relrin Общие вопросы Delphi 3 28.12.2007 16:00