0

「Princple」および「BusinessRule」と呼ばれるスタイルでマークされたテキスト ブロックを含む Word 文書があります。これらのテキスト ブロックは、ドキュメント全体に散らばっています。これらのブロックを見つけて、出現順に別のドキュメントにコピーしたいと考えています。私が使用しているコードは次のとおりです。

Dim SelStyle As String
'SelStyle = "Principle"
SelStyle = "BusinessRule"


Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = ""
    .Replacement.Text = ""
    .Style = SelStyle
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute

Selection.Copy
Windows("Document1").Activate
Selection.TypeParagraph
Selection.PasteAndFormat (wdFormatPlainText)
Selection.TypeParagraph
Windows("mainDoc.docx").Activate
Selection.MoveRight Unit:=wdCharacter, Count:=1

ご覧のとおり、これは手動のプロセスです。最初に Principle のコメントを外し、それらをすべて抽出してから、Princple をコメントし、BusinessRule のコメントを外します。良くない。.Style="Principle" または .Style="BusinessRule" を検索して、すべてを順番に取得する方法はありますか? (そして、第二に、これを行うためにドキュメント全体をループするための提案があれば、さらに感謝します。:-))

ありがとう - ビル

4

2 に答える 2

0

値を配列に格納しないのはなぜですか?

Sub Sample()
    Dim SelStyle(1) As String

    SelStyle(0) = "Principle"
    SelStyle(1) = "BusinessRule"

    For i = 0 To 1
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = ""
            .Replacement.Text = ""
            .Style = SelStyle(i)

        '
        '~~> Rest of your code
        '
    Next i
End Sub
于 2012-05-16T22:22:47.970 に答える
0

fwiw、私はこれに対するアプローチを変更しました。スタイルを検索する代わりに、ドキュメントの各段落を調べて、スタイルが「原則」または「ビジネス ルール」であるかどうかを確認します。true の場合、段落をコピーして貼り付けます。したがって、「または」を取得するだけでなく、順序も取得します。

于 2012-05-29T15:38:29.977 に答える