1

Word 文書内のすべての文をループして、セミ HTML コードに解析しようとしています。テスト中に、閉じられていない文が続く文がスキップされるという興味深い状況に遭遇しました。たとえば、次の 2 つの文があるとします。

これは特殊文字を含む段落の最初の文であり、もう 1 つの文が必要です。これは、そこにあるはずの 2 番目の文です。**

paragraph.range.sentences の各文をループすると、最初の文と段落の末尾の ".**" のみが取得されます。ただし、ピリオドとアスタリスクの間にスペースを追加すると、コードは ". **" で動作します。

ピリオドの後にスペースがなくても、マクロが文のすべてのテキストを読み取るようにするにはどうすればよいですか? 私のコード例は次のとおりです。

Public Sub ParseDoc()
Dim paras As Paragraphs
Dim para As Paragraph
Dim sents As Sentences
Dim sent As Range


    Set paras = ActiveDocument.Paragraphs
    For Each para In paras
        Set sents = para.Range.Sentences
        For Each sent In sents
            MsgBox (sent.Text)
        Next
    Next
End Sub
4

2 に答える 2

0

文章内のすべての文字を「words.special_character」の形式で「読み取る」方法がわかりませんでしたが、Word 文書内のすべてのピリオド + 特殊文字インスタンスを置き換えると、すべての For Each ループが機能することに気付きました。 . サブモジュールの最初で次のコードを使用すると、すべてが期待どおりに機能しました。

'Adds a <SPACE> between a period and a non-alphanumeric character
With ActiveDocument.Range.Find
    .Text = ".([!0-9A-z ])"
    .Replacement.Text = ". \1"
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
End With
于 2013-06-05T11:32:12.063 に答える