Найти в Дзене
Проектные будни

Как причесать м2 и м3 одним нажатием в документе Word

Часто при выпуск инженерного или иного технического документа стоит задача привести к единообразию обозначения единиц измерения. И делать это вручную, даже с автозаменой занимает очень много времени. Ниже показано два примера макроса для решения данной задачи. Для создания макроса в Microsoft Word, который приведет обозначения квадратных и кубических метров к единообразному виду (м² и м³), выполните следующие шаги: Код макроса: 1. Откройте документ Word. 2. Нажмите `Alt + F11`, чтобы открыть редактор VBA (Visual Basic for Applications). 3. В редакторе VBA выберите `Insert > Module`, чтобы создать новый модуль. 4. Вставьте следующий код в модуль: ```vba Sub FormatMeters()   Dim findText As String   Dim replaceText As String   Dim patterns As Variant   Dim i As Integer       ' Паттерны для поиска и замены   patterns = Array( _     "м2", "м²", _     ' Замена м2 на м²     "кв.м", "м²", _    ' Замена кв.м на м²     "м.кв", "м²", _    ' Замена м.кв на м²     "м3", "м³", _     ' Замена м

Аллегория большого текста. Фото мое
Аллегория большого текста. Фото мое

Часто при выпуск инженерного или иного технического документа стоит задача привести к единообразию обозначения единиц измерения. И делать это вручную, даже с автозаменой занимает очень много времени.

Ниже показано два примера макроса для решения данной задачи.

Для создания макроса в Microsoft Word, который приведет обозначения квадратных и кубических метров к единообразному виду (м² и м³), выполните следующие шаги:

Код макроса:

1. Откройте документ Word.

2. Нажмите `Alt + F11`, чтобы открыть редактор VBA (Visual Basic for Applications).

3. В редакторе VBA выберите `Insert > Module`, чтобы создать новый модуль.

4. Вставьте следующий код в модуль:

```vba

Sub FormatMeters()

  Dim findText As String

  Dim replaceText As String

  Dim patterns As Variant

  Dim i As Integer

   

  ' Паттерны для поиска и замены

  patterns = Array( _

    "м2", "м²", _     ' Замена м2 на м²

    "кв.м", "м²", _    ' Замена кв.м на м²

    "м.кв", "м²", _    ' Замена м.кв на м²

    "м3", "м³", _     ' Замена м3 на м³

    "куб.м", "м³", _   ' Замена куб.м на м³

    "м.куб", "м³" _    ' Замена м.куб на м³

  )

   

  ' Применяем замену для каждого паттерна

  For i = LBound(patterns) To UBound(patterns) Step 2

    findText = patterns(i)

    replaceText = patterns(i + 1)

     

    With ActiveDocument.Content.Find

      .ClearFormatting

      .Replacement.ClearFormatting

      .Text = findText

      .Replacement.Text = replaceText

      .Forward = True

      .Wrap = wdFindStop

      .Format = False

      .MatchCase = False

      .MatchWholeWord = False

      .MatchWildcards = False

      .MatchSoundsLike = False

      .MatchAllWordForms = False

      .Execute Replace:=wdReplaceAll

    End With

  Next i

   

  MsgBox "Обозначения квадратных и кубических метров приведены к единообразному виду!"

End Sub

```

Как работает макрос:

1. **Паттерны замены**:

  - `м2`, `кв.м`, `м.кв` заменяются на `м²`.

  - `м3`, `куб.м`, `м.куб` заменяются на `м³`.

2. **Поиск и замена**:

  - Макрос проходит по всему документу и заменяет все найденные варианты на единообразные обозначения.

Вариация данного макроса от пользователя AmokYu:

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

Запуск макроса:

1. Закройте редактор VBA и вернитесь в Word.

2. Нажмите `Alt + F8`, чтобы открыть диалоговое окно "Макрос".

3. Выберите макрос `FormatMeters` и нажмите "Выполнить".

Результат:

- Все обозначения квадратных метров (`м2`, `кв.м`, `м.кв`) будут заменены на `м²`.

с кубическими метрами аналогично