Méthode ITextRange::FindText (tom.h)
Recherche jusqu’à Nombre de caractères pour le texte donné par bstr. La position de départ et la direction sont également spécifiées par Count, et les critères de correspondance sont donnés par indicateurs.
Syntaxe
HRESULT FindText(
BSTR bstr,
long Count,
long Flags,
long *pLength
);
Paramètres
bstr
Type : BSTR
Chaîne à rechercher.
Count
Type : long
Nombre maximal de caractères à rechercher. Il peut s’agir de l’un des éléments suivants.
tomForward | Recherches jusqu’à la fin de l’histoire. Il s’agit de la valeur par défaut. |
n (supérieur à 0) | Recherche en avant n caractères, à partir de cpFirst. Si la plage elle-même correspond à bstr, une autre recherche est effectuée à partir de cpFirst + 1. |
n(inférieur à 0) | Recherche en arrière n caractères, à partir de cpLim. Si la plage elle-même correspond à bstr, une autre recherche est effectuée à partir de cpLim–1. |
0 (plage dégénérée) | La recherche commence après la plage. |
0 (plage non dégénérée) | La recherche est limitée à la plage. |
Dans tous les cas, si une chaîne est trouvée, les limites de plage sont modifiées pour être celles de la chaîne correspondante et pLength est défini sur la longueur de la chaîne. Si la chaîne est introuvable, la plage reste inchangée et pLength est défini sur zéro.
Flags
Type : long
Indicateurs régissant les comparaisons. Il peut s’agir de 0 (valeur par défaut) ou d’une combinaison des valeurs suivantes.
tomMatchWord | 2 | Correspond à des mots entiers. |
tomMatchCase | 4 | Correspond à la casse. |
tomMatchPattern | 8 | Correspond aux expressions régulières. |
pLength
Type : long*
Longueur de la chaîne correspondante.
Valeur retournée
Type : HRESULT
La méthode retourne une valeur HRESULT . Si la méthode réussit, elle retourne S_OK. Si la méthode échoue, elle retourne S_FALSE. Pour plus d’informations sur les codes d’erreur COM, consultez Gestion des erreurs dans COM.
Remarques
La méthode ITextRange::FindText peut également faire correspondre des caractères spéciaux à l’aide d’un caret (^) suivi d’une lettre spéciale. Pour obtenir la liste des caractères spéciaux, consultez la liste spéciale disponible dans la boîte de dialogue Rechercher et remplacer Microsoft Word. Par exemple, ^p
correspond à la marque de paragraphe suivante. Notez que ^c
peut être utilisé pour représenter le contenu du Presse-papiers dans la chaîne à remplacer. Ainsi, l’utilisation ^c
dans la chaîne de recherche vous permet de rechercher du texte enrichi. Pour plus d’informations, consultez les fichiers d’aide Word.
En comparaison avec la méthode ITextRange::FindText, la méthode ITextRange::FindTextStart effectue des recherches vers l’avant ou vers l’arrière à partir du cp de début de la plage, et la méthode ITextRange::FindTextEnd effectue des recherches vers l’avant ou vers l’arrière à partir de la fin cp de la plage. Pour plus d’informations, consultez les descriptions de ces méthodes.
Voici plusieurs extraits de code qui montrent les méthodes ITextRange::FindText .
Exemple n° 1. Le programme Microsoft Visual Basic pour Applications (VBA) suivant imprime tous les commentaires /* ... */ dans un article identifié par la plage r.
Sub PrintComments (r As ITextRange)
r.SetRange 0, 0 'r = insertion pt at start of story
Do While r.FindText("/*") And r.FindTextEnd("*/") 'Select comment
r.MoveStart tomCharacter, 2 'But do not include the opening or
'closing comment brackets
r.MoveEnd tomCharacter, -2
Print r 'Show the folks
Loop
End Sub
Au lieu d’imprimer ces commentaires, ils peuvent être insérés dans un autre instance de modification et enregistrés dans un fichier, ou ils peuvent être insérés dans des cellules distinctes d’une table ou d’une feuille de calcul.
Pour imprimer toutes les lignes contenant une ou plusieurs occurrences du mot « laser », remplacez la boucle par le code suivant :
While r.FindText("laser") // Select next occurrence of "laser"
r.Expand tomLine // Select enclosing line
Print r // Print the line
Wend
Exemple n° 2. Le programme suivant imprime une liste téléphonique, en fonction d’un article qui contient une liste d’adresses. Les entrées de liste d’adresses sont séparées par au moins deux marques de paragraphe, et chaque entrée a la forme suivante.
Person/Business Name
Address (one or more lines)
(area code) telephone number
Notez l’utilisation du caractère ^p
dans l’argument de chaîne FindText pour localiser une paire de marques de paragraphe consécutives.
Sub PrintTelephoneList (r As ITextRange)
r.SetRange 0, 0 // r = insertion point at start of story
r.MoveWhile C1_WHITE // Bypass any initial white space
Do
r.EndOf tomParagraph, 1 // Select next para (line): has name
Print r // Print it
Do
r.MoveWhile C1_SPACE // Bypass possible space chars
If r.Char = Asc("(") Then Exit Do // Look for start of telephone #
Loop While r.Move(tomParagraph) // Go to next paragraph
r.EndOf tomParagraph, 1 // Select line with telephone number
Print r // Print it
Loop While r.FindText("^p^p") // Find two consecutive para marks
End Sub
Exemple n° 3. La sous-routine suivante remplace toutes les occurrences de la chaîne, str1, dans une plage par str2 :
Sub Replace ( tr As ITextRange, str1 As String, str2 As String )
Dim r As ITextRange
r = tr.Duplicate // Copy tr parameters to r
r.End = r.Start // Convert to insertion point at Start
While r.FindText(str1, tr.End - r.End) // Match next occurrence of str
r = str2 // Replace it with rep
Wend // Iterate till no more matches
End Sub
Exemple n° 4. La ligne de code suivante insère un vide avant la première occurrence d’une parenthèse droite, « ( » », qui suit une occurrence de HRESULT.
If r.FindText("HRESULT") And r.FindText("(") Then r = " ("
Pour ce faire, remplacez if en boucle While/Wend dans la ligne de code ci-dessus. Il s’agit d’un exemple de macro FIND/REPLACE qui ne peut pas être exécutée avec les boîtes de dialogue Rechercher et Remplacer .
Configuration requise
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | tom.h |
DLL | Msftedit.dll |
Voir aussi
Conceptuel
Référence