1

.find 中に単語インデックスを取得することは可能ですか? 単語を取得するために .find.text を実行しますが、そのインデックス位置が必要なので、それを配列に保存します。

通常、それは

    documents("doc").word(index)

しかし、私がこのようなものなら:

    dim indexarray() as long
    dim i as long
    i = 0

    with documents("doc").content.find

         .text = word

         do while .execute
            redim preserve indexarray(i)
            indexarray(i) = index
            i = i+1
         loop

    end with

ループなしでインデックスを取得することは可能ですか?

4

1 に答える 1

4

選択した/見つけた単語の数を取得することはできませんが、必要に応じていくつかの回避策が考えられます。ここで、ひとつの案を提示します。

あなたが提示したコードの一部を変更しました-内部のいくつかのコメントを参照してください:

Sub Workaround()

    Dim indexarray() As Long
    Dim i As Long
    Dim Index
    i = 0

    'searching by Range object variable
    Dim DocRNG
    Set DocRNG = ActiveDocument.Content 'here change into your document object

    'start searching with reference to variable
    With DocRNG.Find

         .Text = "commodo"  'here your text to search

         Do While .Execute

            ReDim Preserve indexarray(i)

            'possible workaround!!!
            Index = ActiveDocument.Range(0, DocRNG.End).Words.Count

            indexarray(i) = Index
            i = i + 1
         Loop

    End With
End Sub

重要!コンマ、ポイント、セミコロンなどの一部の文字も に属することに注意してくださいWords collection。したがって、これらの文:

Nunc viverra, imperdiet enim. Fusce est; Vivamus a tellus!

は 13 個の単語を返しますが、そのうちの 9 個は数えることができます。ただし、提案された回避策は正しく機能し、私が試してテストしました。

于 2013-06-10T17:35:05.340 に答える