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

Кавычки «ёлочки»

Сколько копий о них сломано, сколько склок с ГИПами и редакторами пройдено. Ниже описан простой макрос для замены международных кавычек “” на «». 1. Откройте документ Word. 2. Нажмите `Alt + F11`, чтобы открыть редактор VBA. 3. Вставьте новый модуль: выберите Insert > Module. 4. Скопируйте и вставьте следующий код: vba Sub ReplaceQuotes()   Dim findText As String   Dim replaceText As String   Dim doc As Document   Set doc = ActiveDocument      ' Замена открывающих кавычек   findText = Chr(34) ' Международные кавычки (")   replaceText = "«" ' Русские открывающие кавычки   doc.Content.Find.Execute FindText:=findText, ReplaceWith:=replaceText, Replace:=wdReplaceAll      ' Замена закрывающих кавычек   findText = Chr(34) ' Международные кавычки (")   replaceText = "»" ' Русские закрывающие кавычки   doc.Content.Find.Execute FindText:=findText, ReplaceWith:=replaceText, Replace:=wdReplaceAll       MsgBox "Замена кавычек завершена!" End Sub 1. Поиск и замена:   - Макрос ищет все символы м
Оглавление

Сколько копий о них сломано, сколько склок с ГИПами и редакторами пройдено.

Ниже описан простой макрос для замены международных кавычек “” на «».

Макрос для замены кавычек

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

2. Нажмите `Alt + F11`, чтобы открыть редактор VBA.

3. Вставьте новый модуль: выберите Insert > Module.

4. Скопируйте и вставьте следующий код:

vba

Sub ReplaceQuotes()

  Dim findText As String

  Dim replaceText As String

  Dim doc As Document

  Set doc = ActiveDocument

     ' Замена открывающих кавычек

  findText = Chr(34) ' Международные кавычки (")

  replaceText = "«" ' Русские открывающие кавычки

  doc.Content.Find.Execute FindText:=findText, ReplaceWith:=replaceText, Replace:=wdReplaceAll

     ' Замена закрывающих кавычек

  findText = Chr(34) ' Международные кавычки (")

  replaceText = "»" ' Русские закрывающие кавычки

  doc.Content.Find.Execute FindText:=findText, ReplaceWith:=replaceText, Replace:=wdReplaceAll

   

  MsgBox "Замена кавычек завершена!"

End Sub

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

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

  - Макрос ищет все символы международных кавычек (`"`), которые имеют код `Chr(34)`.

  - Открывающие кавычки заменяются на `«`.

  - Закрывающие кавычки заменяются на `»`.

2. Применение ко всему документу:

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

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

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

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

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

Дополнительные улучшения:

Если в документе используются кавычки разных типов (например, `“...”` или `‘...’`), можно расширить макрос для их замены:

vba

Sub ReplaceAllQuotes()

  Dim doc As Document

  Set doc = ActiveDocument

   

  ' Замена открывающих кавычек

  doc.Content.Find.Execute FindText:=Chr(34), ReplaceWith:="«", Replace:=wdReplaceAll ' Замена "

  doc.Content.Find.Execute FindText:=Chr(147), ReplaceWith:="«", Replace:=wdReplaceAll ' Замена “

  doc.Content.Find.Execute FindText:=Chr(145), ReplaceWith:="‘", Replace:=wdReplaceAll ' Замена ‘

   

  ' Замена закрывающих кавычек

  doc.Content.Find.Execute FindText:=Chr(34), ReplaceWith:="»", Replace:=wdReplaceAll ' Замена "

  doc.Content.Find.Execute FindText:=Chr(148), ReplaceWith:="»", Replace:=wdReplaceAll ' Замена ”

  doc.Content.Find.Execute FindText:=Chr(146), ReplaceWith:="’", Replace:=wdReplaceAll ' Замена ’

   

  MsgBox "Все кавычки заменены на русские!"

End Sub

Примечания:

- Убедитесь, что в документе используются стандартные символы кавычек. Если кавычки вставлены как изображения или специальные символы, макрос их не заменит. Макрос, который их распознает приведен ниже.

- Если в документе есть вложенные кавычки (например, `«..."...»`), макрос заменит их на `«...«...»»`. В этом случае может потребоваться ручная корректировка.

Sub ReplaceQuotesInDocument()

  Dim doc As Document

  Set doc = ActiveDocument

     ' Замена кавычек в основном тексте

  ReplaceQuotesInRange doc.Content

     ' Замена кавычек в текстовых полях

  Dim shp As Shape

  For Each shp In doc.Shapes

    If shp.TextFrame.HasText Then

      ReplaceQuotesInRange shp.TextFrame.TextRange

    End If

  Next shp

     ' Замена кавычек в надписях

  Dim inlineShape As InlineShape

  For Each inlineShape In doc.InlineShapes

    If inlineShape.HasTextFrame Then

      ReplaceQuotesInRange inlineShape.TextFrame.TextRange

    End If

  Next inlineShape

     ' Замена кавычек в колонтитулах

  Dim section As Section

  For Each section In doc.Sections

    ReplaceQuotesInRange section.Headers(wdHeaderFooterPrimary).Range

    ReplaceQuotesInRange section.Footers(wdHeaderFooterPrimary).Range

  Next section

     MsgBox "Замена кавычек завершена!"

End Sub

Вот пример макроса, который выполняет замену кавычек во всем документе, включая текстовые элементы внутри фигур и изображений:

Sub ReplaceQuotesInRange(rng As Range)

  ' Замена открывающих кавычек

  With rng.Find

    .ClearFormatting

    .Replacement.ClearFormatting

    .Text = Chr(34) ' Международные кавычки (")

    .Replacement.Text = "«" ' Русские открывающие кавычки

    .Forward = True

    .Wrap = wdFindStop

    .Format = False

    .MatchCase = False

    .MatchWholeWord = False

    .MatchWildcards = False

    .MatchSoundsLike = False

    .MatchAllWordForms = False

    .Execute Replace:=wdReplaceAll

  End With

   

  ' Замена закрывающих кавычек

  With rng.Find

    .ClearFormatting

    .Replacement.ClearFormatting

    .Text = Chr(34) ' Международные кавычки (")

    .Replacement.Text = "»" ' Русские закрывающие кавычки

    .Forward = True

    .Wrap = wdFindStop

    .Format = False

    .MatchCase = False

    .MatchWholeWord = False

    .MatchWildcards = False

    .MatchSoundsLike = False

    .MatchAllWordForms = False

    .Execute Replace:=wdReplaceAll

  End With

End Sub