Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] Необходим макрос.Как выделить все слова написанные загалавными буквами в документе? (http://forum.oszone.net/showthread.php?t=191626)

wiznv 19-11-2010 07:53 1546154

Необходим макрос.Как выделить все слова написанные загалавными буквами в документе?
 
Есть текст где название глав написаны зАглавными буквами.Задача состоит в тот что нужно выделить эти слова и сделать шрифт полужирным.
Уверен что нужен макрос т.к. стандартными средствами замены ничего не получается.

Delirium 19-11-2010 09:15 1546174

Код:

Set myRange = ActiveDocument
For Each aword In myRange.Words
    If aword.Text = UCase(aword.Text) And RTrim(aword.Text) <> "" Then
    aword.Bold = True
  ' MsgBox aword.Text
    End If
Next aword


wiznv 19-11-2010 09:57 1546198

Спасибо Delirium! Все так как нужно ,почти....Макрос выделеят всЕ заглавные буквы включае предлоги :( ,а нужно только СЛОВА . т.е. те где больше одной буквы...

Delirium 20-11-2010 13:35 1547088

Код:

Set myRange = ActiveDocument
For Each aword In myRange.Words
    If aword.Text = UCase(aword.Text) And RTrim(aword.Text) <> "" Then
    If Len(aword.Text) > 1 Then
    aword.Bold = True
  ' MsgBox aword.Text
  End If
    End If
Next aword


Delirium 20-11-2010 17:53 1547231

Кстати, решение было найдено во встроенной справке :) Главное было - найти функцию, считающую слова в документе. Дальше - дело техники и условий :)

wiznv 20-11-2010 20:24 1547347

Delirium спасибо огромное!давай добъем этот макрос. Я тут начал коече вспоминать с универа...но как видишь плохо... :help:
Т.к. последний вариант макроса числа тоже жирными делает,то нужно сравнить строку с числом.Т.е. если это НЕ число то aword.Bold = True

Так вот,я подумал что aword.text надо сравнить с числом так: объявить переменную типа integer потом ее сравнить с aword.text...короче сильно не бить)) вот код:

Sub makros()
Dim Chislo As Integer
Set myRange = ActiveDocument
For Each aword In myRange.Words
If aword.Text = UCase(aword.Text) And RTrim(aword.Text) <> "" Then
If Len(aword.Text) > 3 Then
If aword.Text <> Chislo Then
aword.Bold = True
End If
End If
Next aword

End Sub

Но увы.с ошибкой работает макрос...незнаю как исправить..

Delirium 21-11-2010 09:09 1547652

Код:

If IsNumeric(aword.Text) = True Then
и после aword.Bold = True
End If Не забудь

wiznv 22-11-2010 10:26 1548401

еще бы проверить вариант где он слова начинающиеся с новой строки толко выделял или после цифры...но это уже слишком сложно и не обязательно! Спасибо добрый человек!
Итого:
Код:

Sub makros()
Set myRange = ActiveDocument
For Each aword In myRange.Words
If aword.Text = UCase(aword.Text) And RTrim(aword.Text) <> "" Then
If Len(aword.Text) > 2 Then
IIf IsNumeric(aword.Text) = falsh Then
aword.Bold = True
End If
End If
End If
Next aword

End Sub


Delirium 23-11-2010 01:00 1549108

wiznv, обрамляйте свой код тегами [code] - решетка на панели. Тогда будет гораздо наглядней.


Время: 09:40.

Время: 09:40.
© OSzone.net 2001-