Статьи из блога
Макрос изменения вида кавычек
Этот макрос (спасибо за помощь Леониду Бродскому) может пригодиться в тех случаях, когда в документе встречаются наряду с парными кавычками также и прямые кавычки. Поскольку в России принято использовать парные кавычки (елочки), то необходимо преобразовать все прямые кавычки в «правильные».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Sub changeQuote() 'Замена прямых кавычек на парные кавычки (елочки) Dim blnQuotes As Boolean 'запомнить пользовательскую установку blnQuotes = Options.AutoFormatAsYouTypeReplaceQuotes Options.AutoFormatAsYouTypeReplaceQuotes = False With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "" "(*)" "" .Replacement.Text = "«\1»" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True .Execute Replace:=wdReplaceAll End With 'восстановить пользовательскую установку Options.AutoFormatAsYouTypeReplaceQuotes = blnQuotes End Sub |
Чтобы иметь быстрый доступ к этому макросу, назначьте для него сочетание клавиш или создайте кнопку на панели инструментов или в панели быстрого доступа (Word 2007).
Рубрика: Макросы, Стили и форматирование
Метки: кавычки | макросы | поиск и замена | форматирование
Просмотров: 36911
Подписаться на комментарии по RSS
Версия для печати
Метки: кавычки | макросы | поиск и замена | форматирование
Просмотров: 36911
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 3 способа очистки списка недавно открытых документов
- Word 2007: полотно, рисунки, линии
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
- Быстрый поиск форматированного текста
- В чем различие между Автозаменой и Автотекстом
- В чем различие между стилями Обычный (Normal) и Основной текст (Body Text)?
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вставка будущей даты
Комментариев: 19
Работа этого макроса, по-видимому, зависит от языка, установленного в системе. Лично у меня он переводит прямые кавычки (") в "умные" (”), но тоже как-то неправильно - когда сам печатаю, Word делает „ и ”.
В любом случае, в него надо добавить восстановление исходной установки пользователя:
Sub
changeQuote()
Dim
prevQuotes
As
Boolean
prevQuotes = Options.AutoFormatAsYouTypeReplaceQuotes
Options.AutoFormatAsYouTypeReplaceQuotes =
True
With
Selection
.Find.Text =
""
""
.Find.Replacement.Text =
""
""
.Find.Forward =
True
.Find.Wrap = wdFindContinue
End
With
Selection.Find.Execute Replace:=wdReplaceAll
Options.AutoFormatAsYouTypeReplaceQuotes = prevQuotes
End
Sub
Леонид, я думаю что надо не только добавить восстановление параметров автозамены кавычек, но и изменить код в части поиска: искать не просто кавычки прямые, а искать их код (через Chr). Иначе,действительно, не совсем корректно получается. Сейчас попробую и изменю.
В общем, можно строку с оператором Find заменить на эту строку:
.Find.text = Chr(34)
спасибо за поднятую тему. У меня возник вопрос, а что делать в подобных случаях?
Пример: «Операция "Кооперация"».
При подобном преобразовании Word делает направление второй кавычки неправильным, если между ней и текстом есть пробел. Как с этим бороться?
Дмитрий, если в вашем тексте перед закрывающей кавычкой идет пробел, то вы можете добавить в вышеприведенный код сразу после оператора End With следующий код:
Selection.HomeKey wdStory
With
Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text =
"^32"
& Chr(187)
.Replacement.Text = Chr(187)
.Forward =
True
.Wrap = wdFindContinue
.MatchWildcards =
True
.Execute Replace:=wdReplaceAll
End
With
Он ищет символы пробела и закрывающей кавычки и заменяет на одну кавычку.
Прошу прощения, а нет здесь на сайте макроса, который наоборот превращал бы все подобного рода кавычки « », в " "?
Юра, слегка модифицировав код Антона Кокина, Вы получите желаемое:
Options.AutoFormatReplaceQuotes =
False
Selection.HomeKey wdStory
With
Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text =
"["
& Chr(171) & Chr(187) &
"]"
.Replacement.Text = Chr(34)
.Forward =
True
.Wrap = wdFindContinue
.MatchWildcards =
True
.Execute Replace:=wdReplaceAll
End
With
Александр Витер, большое спасибо! Все работает!
Подскажите пожалуйста как каким кодом переобразовать все кавычки (« » " ") в умные только те которые открываются вверх а закрываются вниз.
Люди знающие, а могли бы выложить макрос, который бы обрамлял кавычками-лапками выделенный текст? Насколько понимаю, нужно присвоить выделенному тексту некую переменную, а потом её заменить на „переменную“.
Penniwise, всё гораздо проще
Sub
EncloseInQuotes()
With
Selection
.InsertBefore Chr(132)
'Открывающая кавычка
.InsertAfter Chr(148)
'Закрывающая кавычка
End
With
End
Sub
Александр Витер
Большое спасибо! Выделение работает!
Александр, спасибо. Всё действительно оказалось проще.
Здесь же замечу — вместо Chr(148) в русском языке нужно использовать Chr(147).
Могу порекомендовать мою модификацию.В случае если кавычки выгибает не в ту сторону
Sub олоша()
Dim blnQuotes As Boolean
blnQuotes = Options.AutoFormatAsYouTypeReplaceQuotes
Options.AutoFormatAsYouTypeReplaceQuotes = False
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = """(*)"""
.Replacement.Text = "»\1«"
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
Options.AutoFormatAsYouTypeReplaceQuotes = blnQuotes
End Sub
Господа, подскажите, есть ли техническая возможность автоматически макросом заменить «елочки» внутри «елочек» на «лапки»?
из
Цитата: «В произведении «Война и мир» Толстого...»
сделать
Цитата: «В произведении “Война и мир” Толстого...»
Попробовал макрос.
Кавычки поменял, но почему-то там, где должны быть правые, он выставил левые и наоборот...
Попробовал "олоша"
Точно так же выворачивает елочки как бог на душу положит!..
Скрипт по смене кавычек " " на « ». Есть небольшие ограничения, но можно легко доработать.
Sub LoopQuotesChange()
Dim cel As Range
Dim selectedRange As Range
Dim s As String
Dim send As String
Dim count As Integer
count = 0
send = ""
MsgBox "I'm start"
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
s = cel.Value
For i = 1 To Len(s)
If Mid(s, i, 1) = Chr(34) Then
count = count + 1
If i = 1 Then
send = send + Chr(171)
Else
If i = Len(s) Then
send = send + Chr(187)
Else
If Mid(s, i - 1, 1) = " " Then
send = send + Chr(171)
Else
If Mid(s, i + 1, 1) = " " Or Mid(s, i + 1, 1) = "," Or Mid(s, i + 1, 1) = "." Then
send = send + Chr(187)
Else
MsgBox cel.Value
send = send + Chr(171)
End If
End If
End If
End If
Else
send = send + Mid(s, i, 1)
End If
Next
cel.Value = send
send = ""
Next cel
MsgBox "I'm end. Chislo zamen = " + CStr(count)
End Sub
а если надо - ООО "Группа "Мэтр" заменить на ООО «Группа «Мэтр» ? по данному выше макросу получилось ООО «Группа »Мэтр«