- Сообщения
- 5
- Реакции
- 0
Прошу прощения, если вдруг в N-й раз задал этот вопрос. Но пролистал форум, ответа не нашел.
Задача следующая. В файле Corel Draw нужно заменить все прямые кавычки " (034) на типографские «» (171 и 187).
Нашел тут на форуме макрос, всё в нем мне понятно:
Sub textConvertKavichky()
Dim s As Shape, r As New ShapeRange
Set r = ActiveSelectionRange
For Each s In r
If s.Type = cdrTextShape Then
s.Text.Replace Chr(32) & Chr(34), Chr(32) & Chr(171), True, ReplaceAll:=True
s.Text.Replace vbCr & Chr(34), vbCr & Chr(171), True, ReplaceAll:=True
s.Text.Replace Chr(34) & Chr(32), Chr(187) & Chr(32), True, ReplaceAll:=True
s.Text.Replace Chr(34) & vbCr, Chr(187) & vbCr, True, ReplaceAll:=True
End If
Next s
End Sub
НО! Если кавычка стоит первым либо последним символом, она не меняется - что и понятно,
потому что замена идет по парам символов ПРОБЕЛ-КАВЫЧКА и КАВЫЧКА-ПРОБЕЛ.
Решение вижу в двух вариантах:
1) Если первый символ 034, меняем на 171
Если последний символ 032, меняем на 187
обрабатываем циклом
2) добавляем пробел в начале и конце
обрабатываем циклом
удалем пробелы TRIM
А теперь самое главное - и смешное: как это записать?! Visual Basic никогда не изучал, а интуитивно синтаксис не понял. Убил полдня.
Задача следующая. В файле Corel Draw нужно заменить все прямые кавычки " (034) на типографские «» (171 и 187).
Нашел тут на форуме макрос, всё в нем мне понятно:
Sub textConvertKavichky()
Dim s As Shape, r As New ShapeRange
Set r = ActiveSelectionRange
For Each s In r
If s.Type = cdrTextShape Then
s.Text.Replace Chr(32) & Chr(34), Chr(32) & Chr(171), True, ReplaceAll:=True
s.Text.Replace vbCr & Chr(34), vbCr & Chr(171), True, ReplaceAll:=True
s.Text.Replace Chr(34) & Chr(32), Chr(187) & Chr(32), True, ReplaceAll:=True
s.Text.Replace Chr(34) & vbCr, Chr(187) & vbCr, True, ReplaceAll:=True
End If
Next s
End Sub
НО! Если кавычка стоит первым либо последним символом, она не меняется - что и понятно,
потому что замена идет по парам символов ПРОБЕЛ-КАВЫЧКА и КАВЫЧКА-ПРОБЕЛ.
Решение вижу в двух вариантах:
1) Если первый символ 034, меняем на 171
Если последний символ 032, меняем на 187
обрабатываем циклом
2) добавляем пробел в начале и конце
обрабатываем циклом
удалем пробелы TRIM
А теперь самое главное - и смешное: как это записать?! Visual Basic никогда не изучал, а интуитивно синтаксис не понял. Убил полдня.