Статьи из блога

Макрос замены м2 и м3 на обозначения в верхнем регистре

Алексей спрашивает:

Как сделать автозамену м2 и м3 на обозначения их в верхнем регистре? Средствами автозамены это не получается сделать. А нажимать каждый раз кнопочку верхнего регистра не очень удобно.

Алексей, автозаменой не получиться сделать это, действительно. Используйте приведенный ниже макрос. Текст документа предварительно выделять не нужно.

Создайте для этого макроса кнопку на панели инструментов или назначьте сочетание клавиш:

Sub M2a() 
Dim rng As Range 
Set rng = ActiveDocument.Range 
With rng.Find 
   .MatchWildcards = True 
   .Text = "[А-яЁё][1-9]{1}" 
   .MatchCase = False 
   While .Execute 
      rng.Characters.Last.Font.Superscript = True 
      rng.Collapse Direction:=wdCollapseEnd 
   Wend 
End With 
End Sub

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us
Вы можете помочь в развитии сайта, сделав пожертвование:

Или помочь сайту популярной криптовалютой:

 

BTC Адрес: 1Pi3a4c6sJPbfF2sSYR2noy61DMBkncSTQ

 

ETH Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

 

LTC Адрес: LUyT9HtGjtDyLDyEbLJZ8WZWGYUr537qbZ

 

DOGE Адрес: DENN2ncxBc6CcgY8SbcHGpAF87siBVq4tU

 

BAT Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

 

XRP Адрес: rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh Депозит Tag: 105314946

 

USDT (ERC-20) Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

 

Яндекс Деньги: 410013576807538

 

Вебмани (R ещё работает): R140551758553 или Z216149053852

 

А тут весь список наших разных крипто адресов, может какой добрый человек пожертвует немного монет или токенов - получит плюсик в карму от нас :) Благо Дарим, за любую помощь!

 

Еще записи по вопросам использования Microsoft Word:

Комментариев: 20

  1. Моторокер
    19.02.2009 в 14:08 | #1

    > Средствами автозамены это не получается сделать.

    За один этап нет. За 2 можно.

    Например вначале заменить

    м^#

    на верхний регистр, затем только

    м

    на обычный текст.

    Или подстановочными знаками заменить

    (м)([0-9])

    на что-то вроде

    \1*\2*

    а после заменить

    *([0-9])*

    на

    \1

    Это чтобы с макросами не заморачиваться и как альтернативный вариант решения проблемы.

  2. Роман
    25.02.2009 в 18:29 | #2

    В Unicode-шрифтах есть символы ² и ³ - (их коды 00B2 и 00B3 соответственно). Для обозначения квадрата и куба лучше использовать именно их, а не надстрочный символ (понятие "верхний регистр" - иное).

    Поэтому:

    1. Один раз вставляем такой символ в текст.

    2. Копируем его в буфер обмена.

    3. Делаем замену с подстановочными знаками:

    что: (м)(2)

    на что: \1²

    Для тройки так:

    что: (м)(3)

    на что: \1³

    Макросы - это хорошо, но есть средства и попроще.

    Удачи.

  3. Дмитрий
    25.03.2009 в 03:01 | #3

    Люди, да что вы мудрите с макросами?

    Я сам столкнулся с этим - в работе постоянно нужно переводить эти м2 и м3 по регистрам, как вверх, так и вниз. Решил проблему легко - через "сервис-настройка-клавиатура", там выбираем категорию "формат", а с правой стороны находим команды "Subscript" (нижний регистр) и "Superscipt" (верхний регистр), назначаем, если неудобны "заводские" настройки, комбинацию клавиш и вуаля! - вперед и с песней!

    Всем успехов!

  4. Денис
    02.04.2009 в 13:18 | #4

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

    Подскажите, пожалуйста, такую вещь:

    - зашел в раздел "Сервис"

    - выбрал "Параметры",

    - выбрал "Вид"

    - поставил флажок "Границы текста".

    После этого у меня пропали номера страниц, а вместо них появилось {Page} и "кочует" теперь из документа в документ. Как вернуть прежнюю разметку?

    Спасибо.

    Денис Перепёлкин.

  5. 02.04.2009 в 14:06 | #5

    Денис, вот заметка по этой теме: http://wordexpert.ru/page/kodyi-poley-vmesto-ssyilok-kak-vosstanovit-vid-ssyilok

  6. Андрей
    20.08.2009 в 08:36 | #6

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

    Помогите приспособить данный макрос для поиска и замены в таблице Word. Например ТОЛЬКО в третьем столбце произвести поиск и замену м2 и м3 на обозначения в верхнем регистре.

    Заранее спасибо!

  7. 20.08.2009 в 14:04 | #7

    Поставьте курсор в нужную таблицу и запустите макрос:

    Sub ReplaceInThirdColumn()
    Dim oRng As Range
    Dim oCell As Cell
    For Each oCell In Selection.Tables(1).Columns(3).Cells
      Set oRng = oCell.Range
      With oRng.Find
        .Text = "[А-яЁё][1-9]{1}"
        .MatchWildcards = True
        .MatchCase = False
        While .Execute
          If oRng.End <= oCell.Range.End Then oRng.Characters.Last.Font.Superscript = True
        Wend
      End With
    Next
    End Sub

  8. Андрей
    20.08.2009 в 14:53 | #8

    Спасибо Александр!

    Макрос запустил. Работает как надо.

  9. 20.08.2009 в 16:18 | #9

    А можно и без макроса. Выделите третий столбец и сделайте все это в два захода, как предложил Моторокер в первом комменарии к этой теме.

  10. Виктор
    01.11.2010 в 13:45 | #10

    (word 2003) Зачем менять м2 на верхний регистр если есть специальный символ

    Sub m2()
    '
    ' m2 Макрос
    ' Макрос записан 01.11.2010 Viktor
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "м2"
            .Replacement.Text = "м" & ChrW(178)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "м3"
            .Replacement.Text = "м" & ChrW(179)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub

  11. Виктор
    02.11.2010 в 00:30 | #11

    Провел на вашем сайте пол дня, нашел много нового и полезного для себя (Спасибо!) и по полученному опыту оптимизировал ранее опубликованный код:

    Sub m2()
    '
    ' m2 Макрос
    ' Макрос записан 01.11.2010 Viktor
    ' Замена м2 и м3 во всем документе на символы
    '
        Dim i As Integer
        Dim sLarge As Variant
        Dim sSmall As Variant
        Dim rDoc As Range
        Set rDoc = ActiveDocument.Range
        'список возможных замен
            sLarge = Array("м2", "м3", "m2", "m3", "кв.м.", "кв.м", _
            "М2", "М3", "M2", "M3", "КВ.М.", "КВ.М")
            sSmall = Array("м" & ChrW(178), "м" & ChrW(179), "m" & ChrW(178), "m" & ChrW(179), "м" & ChrW(178), "м" & ChrW(178), _
            "М" & ChrW(178), "М" & ChrW(179), "M" & ChrW(178), "M" & ChrW(179), "М" & ChrW(178), "М" & ChrW(178))
        Application.ScreenUpdating = False  ' Запрещаем обновление экрана во время работы макроса
        With rDoc.Find  'заменяем все букво-цифры на соответствующие букво-символы
            .ClearFormatting
            .Replacement.ClearFormatting
            .Forward = True
            .Wrap = wdFindStop
            .MatchWildcards = False
            .Format = True
            .MatchCase = True
        For i = LBound(sLarge) To UBound(sSmall)
            .Text = sLarge(i)
            .Replacement.Text = sSmall(i)
            .Execute Replace:=wdReplaceAll
        Next i
        End With
        Application.ScreenUpdating = True  ' Обновляем экран
    End Sub

    Если возможно, покажите как можно еще больше его улучшить

  12. 02.11.2010 в 08:32 | #12

    Виктор, спасибо.

  13. ~gHosTLy_Prose~
    21.06.2011 в 18:30 | #13

    Здравствуйте. Помогите первоначальный простенький макрос преобразовать под Office 2007. В Excel 2007 ругается на Find, сообщая, что нету у него нету не одного аргумента... По другому оператор работает в 2007 офисе видимо. Моих знаний не хватило, чтобы сделать это. Пожалуйста, помогите.

  14. Аноним
    25.11.2011 в 17:12 | #14

    Здравствуйте. Подскажите, пожалуйста, как в слове букву "л" заменить на "^"? У меня к сожалению ничего не получается, а контрольную надо сделать

  15. Аноним
    25.11.2011 в 17:19 | #15

    Спасибо, уже не надо)) У меня все получилось))

  16. Ваня
    23.11.2012 в 15:24 | #16

    Как найти все слова в верхнем регистре и удалить их из документа Word 2007 и Exel 2007 или же заменить на дефис?

  17. Ваня
    23.11.2012 в 15:28 | #17

    Хочу уточнить вопрос: можно и удалить слова или их заманить, разницы нет главное чтоб слова исчезли из текста.

  18. Аноним
    14.11.2013 в 11:26 | #18

    Как перейти на строчные?

    Дело в том, что печатаю таблицу, в которой много слов (именно слов, а не цифр) при переходе на новую строку выскакивает заглавная буква. Приходится постоянно редактировать, это занимает много времени да и сил.

    Использую настройку:

    регистр - строчные - ок

    но только перехожу к тексту все повторяется - в новой строке первая буква заглавная.

  19. Boris_R
    14.12.2013 в 21:51 | #19

    К вопросу "Как перейти на строчные? ...при переходе на новую строку выскакивает заглавная буква."

    В Параметрах Word вкладка "Правописание" кнопка "Параметры автозамены", убрать флажок "Делать первые буквы ячеек таблиц прописными"

  20. Алексей
    17.11.2016 в 12:48 | #20

    1. А каким образом сделать чтобы макрос работал только к выделенной части.

    2. Как в условие добавить кроме м2 еще и дм3 (конкретно в макрос шапке)

Оставьте комментарий!

(обязательно)

^ Наверх