3

私がしなければならないことは、単語文書で金額を検索し、その金額をユーザー検証のためにプログラムに返すことです。金額が「$」で始まり、小数点以下 2 桁で終わることはわかっています (ドキュメントごとに 1 つの金額しかありません)。検索は私が望むようにtrueを返しますが、実際にWord文書から完全な図を引き出すにはどうすればよいですか(変数に割り当てられます)

以下のコード (Excel 2010); 乾杯。

With wdDoc.Content.Find
   .Text = "$*.??"
   .MatchWildcards = True
   If .Execute Then
      'would be verified here
   Else
      'etc
   End If
End With

編集:次の作業を行うことができました。

   With wdApp.Selection.Find
      .Text = "$*.??"
      .Wrap = wdFindAsk
      .Forward = True
      .MatchWildcards = True
      If .Execute Then
         debug.print wdApp.Selection.Text
      Else
         debug.print "Not Found"
      End If
   End With

これに対する唯一のマイナス点は、この検索の実行中にユーザーが別の単語ドキュメントを選択できた場合、選択が変更されたため結果が見つからないことです。コードで以前に開いたアクティブなドキュメントのみを具体的に検索する方法はありますか? (「wdDoc」)。wdDoc.Content を使用しても、文字列を返す方法がないようです。

Edit2: Word.Application ではなく Word.Document を使用して検索からテキストを返す方法はありますか?

4

2 に答える 2

1

Rangeオブジェクトを使用して、見つかったテキストを参照できます。

また、検索パターン$*.??は、迷子が存在する場合に、必要なもの以外のドキュメント内の多くのものを見つける可能性があります$

このパターンを使用して、正確な金額を見つけることができます

$[0-9]{1,}.[0-9]{2}

Sub Demo()
    Dim wdDoc As Document
    Dim oRng As Range

    ' Set reference to required doc
    Set wdDoc = ActiveDocument

    ' ....

    Set oRng = wdDoc.Content
    With oRng.Find
        .Text = "$[0-9]{1,}.[0-9]{2}"
        .Wrap = wdFindAsk
        .Forward = True
        .MatchWildcards = True

        If .Execute Then
           Debug.Print oRng
        Else
          'etc
        End If
    End With
End Sub
于 2013-10-15T09:29:50.010 に答える