1

Тема: Как найти кавычку заданного кода?

Находит как прямые, так и "ёлочки". Мне нужно - только прямые.

With Selection.Paragraphs(1).Range
    .Find.Text = ChrW(&H22)
    .Find.Execute
    If .Find.Found = True And .Find.Text <> ChrW(&HAB) And .Find.Text <> ChrW(&HBB) Then
        .MoveEnd Unit:=wdWord, Count:=1
        MsgBox (.Text)
    End If
End With

2

Re: Как найти кавычку заданного кода?

o5andrey пишет:

Находит как прямые, так и "ёлочки". Мне нужно - только прямые.

With Selection.Paragraphs(1).Range
    .Find.Text = ChrW(&H22)
    .Find.Execute
    If .Find.Found = True And .Find.Text <> ChrW(&HAB) And .Find.Text <> ChrW(&HBB) Then
        .MoveEnd Unit:=wdWord, Count:=1
        MsgBox (.Text)
    End If
End With

Посмотрите точную кодировку символа, который вам надо найти. Может помочь функция AscW(). Скорее всего вам нужно просто искать Chr(34). А вообще кавычек очень много - поэтому нужно быть внимательным если могли ставиться другие.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

3

Re: Как найти кавычку заданного кода?

Так почему же ищет оба типа, а не который я задал? При том коды различает.

4

Re: Как найти кавычку заданного кода?

With Selection.Paragraphs(1).Range
    .Find.Text = ChrW(&H22)
m:  .Find.Execute
    If .Find.Found = True And .Text = ChrW(&H22) Then
        .MoveEnd Unit:=wdWord, Count:=1
        MsgBox (.Text)
    Else: GoTo m ' как проверить что совпадение поиска не последнее в абзаце?
    End If
End With

5

Re: Как найти кавычку заданного кода?

With Selection.Paragraphs(1).Range
    .Find.Text = ChrW(&H22)
m:  .Find.Execute
    If .Find.Found = True And .Text = ChrW(&H22) Then
        .MoveEnd Unit:=wdWord, Count:=1
        MsgBox (.Text)
    Else
        If .Find.Found = True Then GoTo m
    End If
End With

6

Re: Как найти кавычку заданного кода?

У меня получилась такая программа. Это чтобы при копировании абзацев из браузеров, PDF и др. приводить текст к нормальному виду.

Sub ФорматированиеАбзаца()
Selection.Paragraphs.First.Range.Select
Selection.Paragraphs.First.Range.Font.Name = calibri
Selection.Paragraphs.First.Range.Font.Color = wdColorAutomatic
Selection.Paragraphs.First.Range.Font.Size = 10
Selection.Paragraphs.First.FirstLineIndent = CentimetersToPoints(1.2)
Selection.Paragraphs(1).SpaceBefore = 0
Selection.Paragraphs(1).SpaceAfter = 0
Selection.Paragraphs(1).Space1
For Each i In Selection.Paragraphs(1).Range.Hyperlinks
    i.Delete
Next i
Selection.Paragraphs(1).Alignment = wdAlignParagraphJustify
With Selection.Paragraphs(1).Range.Find
    .Text = "--"
    .Replacement.Text = "^+"
    .Execute Replace:=wdReplaceAll
End With
Call Replace_quotes(&H22)
Call Replace_quotes(&H201C)
Call Replace_quotes(&H201D)
Call Replace_quotes(&H201E)
End Sub

Private Sub Replace_quotes(code)
With Selection.Paragraphs(1).Range
    .Find.Text = ChrW(code)
    .Find.Wrap = wdFindContinue
    .Select
    While .Find.Execute And .InRange(Selection.Range) = True
        .MoveEnd Unit:=wdWord, Count:=1
        symbol = Mid(.Text, 2, 1)
        If symbol = "." _
        Or symbol = ChrW(&H20) _
        Or symbol = ChrW(13) _
        Or symbol = "," _
        Or symbol = ";" _
        Or symbol = ":" Then
            .MoveEnd Unit:=wdCharacter, Count:=-(Len(.Text) - 1)
            .Text = ChrW(&HBB)
        Else
            .MoveEnd Unit:=wdCharacter, Count:=-(Len(.Text) - 1)
            .Text = ChrW(&HAB)
        End If
    Wend
End With
Selection.HomeKey
End Sub

Комментарии при копировании из VBA в кракозябры превращаются. Как вы их копируете?

7

Re: Как найти кавычку заданного кода?

Ой, если абзац с кавычками в документе всего один, программа входит в бесконечный цикл. Я выкрутился так: после Private Sub Replace_quotes(code) добавить

ActiveDocument.Paragraphs.Add
ActiveDocument.Paragraphs.Last.Range = "Сменим кавычки... ("")" ' добавим абзац с кавычкой

перед End Sub добавить

ActiveDocument.Paragraphs.Last.Range.Delete