Слово VBA, чтобы выбрать предложение - PullRequest
2 голосов
/ 12 февраля 2011

Я хочу выбрать предложения в документе Word, которые начинаются с жирного символа.

Как я могу это сделать?

1 Ответ

2 голосов
/ 12 февраля 2011

Как насчет:

Dim s As Range
For Each s In ActiveDocument.Sentences
    If s.Characters(1).Bold = True Then
        Debug.Print s
    End If
Next

Я не совсем понимаю, что вы подразумеваете под словом "выбрать", вы можете использовать s.Select, но оно будет работать только для одного предложения.

РЕДАКТИРОВАТЬ комментарии

Очень грубо:

Dim s As Range
Dim doc1 As Document
Dim doc2 As Document

Set doc1 = Word.Documents("Doc1.doc")
Set doc2 = Word.Documents("Doc2.doc")

For Each s In doc1.Sentences
    If s.Characters(1).Bold = True Then
        Debug.Print s
        doc2.Select
            Selection.Find.ClearFormatting
            With Selection.Find
                ''.Text cannot be set to more than 256 characters
                .Text = s
                .Replacement.Text = ""
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = False
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            a = Selection.Find.Execute
            If a = True Then
                Selection.Characters(1).Font.Bold = True
                ''Or for the whole sentence
                Selection.Font.Bold = True
            End If
        doc1.Select
    End If
Next

РЕДАКТИРОВАТЬ re Комментарии # 2

Два сравниваемых документа идентичны, поэтому возможно:

Dim doc1 As Document
Dim doc2 As Document
Dim i As Integer

Set doc1 = Word.Documents("Doc1.doc")
Set doc2 = Word.Documents("Doc2.doc")

If doc1.Sentences.Count <> doc2.Sentences.Count Then
    MsgBox "These two documents do not match."
    Exit Sub
End If

For i = 1 To doc1.Sentences.Count
    If doc1.Sentences(i).Characters(1).Bold = True Then
        ''Debug.Print doc1.Sentences(i)
        If doc1.Sentences(i).Text = doc2.Sentences(i).Text Then
            doc2.Sentences(i).Bold = True
        Else
            MsgBox "Sentences do not match."
        End If
    End If
Next
...