Страница 1 из 1

Замена текста средствами VBA

Добавлено: 26 июн 2009, 23:44
VistaSV30
Подскажите что делать:
Задача такая: нужно найти в тексте абзацы в начале которых стоят 3 пробела и заглавная русская буква, далее нужно заменить пробелы символом #.

Первую часть задания я выполнил, вот пример кода:

Sub ПроверкаНачалаСтрок()
Dim I As Long, s As Variant

For I = 1 To ActiveDocument.Paragraphs.Count
s = ActiveDocument.Paragraphs(I)
If Mid(s, 1, 3) = " " Then
If Asc(Mid(s, 4, 1)) > 192 And Asc(Mid(s, 4, 1)) < 224 Then

' ??????????????????????????????????

End If
End If
Next

End Sub

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

Спасибо!

Re: Замена текста средствами VBA

Добавлено: 27 июн 2009, 00:24
EducatedFool

Код: Выделить всё

[color=darkblue]Sub[/color] test()
    [color=darkblue]With[/color] ActiveDocument.Range.Find
        .Text = "   ([A-ZА-ЯЁ])"
        .MatchWildcards = [color=darkblue]True[/color]
        .Wrap = wdFindContinue
        .Replacement.Text = "###\1"
        .Execute Replace:=wdReplaceAll
    [color=darkblue]End[/color] [color=darkblue]With[/color]
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

Замена текста средствами VBA

Добавлено: 28 июн 2009, 11:16
VistaSV30
Но так будет происходить замена по всему тексту, а мне нужно только в начале абзацев (ActiveDocument.Paragraphs)

Re: Замена текста средствами VBA

Добавлено: 28 июн 2009, 11:58
EducatedFool
Тогда так:

Код: Выделить всё




[color=darkblue]Sub[/color] test()
    [color=darkblue]With[/color] ActiveDocument.Range.Find
        .Text = [B][color="Red"]Chr(13)[/color][/B] & "   ([A-ZА-ЯЁ])"
        .MatchWildcards = [color=darkblue]True[/color]
        .Wrap = wdFindContinue
        .Replacement.Text = [B][color="#ff0000"]Chr(13)[/color][/B] & "###\1"
        .Execute Replace:=wdReplaceAll
    [color=darkblue]End[/color] [color=darkblue]With[/color]
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

Re: Замена текста средствами VBA

Добавлено: 28 июн 2009, 15:53
Aent
VistaSV30 писал(а):3 пробела и заглавная русская буква
Так что [А-Z] в образце лишние. Кроме того, необходимо дополнительно
проверять первый абзац

Код: Выделить всё

With ActiveDocument.Paragraphs(1)
     If mid$(.Range,1,4) like "   [А-ЯЁ]" then
          With .Range
                .Characters(1) ="#"
                .Characters(2) ="#"
                .Characters(3) ="#" 
          End with 
     End if  
End with

Re: Замена текста средствами VBA

Добавлено: 28 июн 2009, 16:54
VistaSV30
Спасибо заработало!!! ))))