1

htmlタグで定義された多くのhtmlドキュメントを含むワードドキュメントがあります。範囲の配列またはコレクションを作成したいと思います。各範囲は1つのhtmlドキュメントで構成されています。たとえば、Wordドキュメントは次のとおりです。

<html> <head> <title> </title> </head> <body> HTML Doc 1 </body> </html>
<html> <head> <title> </title> </head> <body> HTML Doc 2 </body> </html>
<html> <head> <title> </title> </head> <body> HTML Doc 3 </body> </html>

など。rngHTMLDocs()As Rangeに一連の範囲を設定したいと思います。各範囲には、開始および終了の各htmlタグ内のテキストが含まれます。

これらの範囲を定義するドキュメント全体を反復処理するために次のコードを作成しましたが、HTMLDoc1を選択し続けるだけです。反復全体に間違った方法でアプローチしている可能性があります。とにかく、ここにコードがあります:

Set rngDocContent = ActiveDocument.Content
intCounter = 1
With rngDocContent.Find
    .ClearFormatting
    .Text = "<html>"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Execute
    Do While .Found = True
        Set rngTemp = rngDocContent.Duplicate
        rngTemp.Select
        Selection.Extend
         With Selection.Find
             .ClearFormatting
             .Text = "</html>"
             .Replacement.Text = ""
             .Forward = True
             .Wrap = wdFindAsk
             .Execute
        End With
        Set rngHtmlDocs(intCounter) = Selection.Range
        Selection.Start = Selection.End
        intCounter = intCounter + 1
     Loop
 End With

ドキュメント全体にrngDocContentを設定し、wdFindContinueを使用する際に、実際には、開始htmlタグの次のインスタンスをドキュメントで検索し続けることを期待していましたが、そうではありません。あなたが提供するかもしれないどんな助けにも前もって感謝します。

4

2 に答える 2

1

この場合、範囲オブジェクトのコレクションの方がうまく機能しますか?コレクションオブジェクトを作成し、検索を繰り返すたびに、新しい範囲オブジェクトを作成して、それをコレクションに追加します。そうすれば、各htmlドキュメントをcolRanges(n)として参照できますか?

于 2012-06-22T20:07:33.070 に答える
1

私が欠けていたのは、Loopステートメントの直前の.Executeステートメントであることがわかりました。これが、元の.Findを続行する原因であるためです。また、ドキュメントに含まれているHTMLドキュメントの数を事前にカウントしていなかったため、ReDimPreserveステートメントを追加しました。したがって、ループの終わりは次のようになります。

       Set rngHtmlDocs(intCounter) = Selection.Range
       Selection.Start = Selection.End
       intCounter = intCounter + 1
       ReDim Preserve rngHtmlDocs(intCounter)
       .Execute
    Loop
End With

これが誰かに役立つことを願っています。

于 2012-06-22T19:57:27.223 に答える