2009-07-11 9 views
3

J'ai environ 100 lignes de texte que je veux tokenizer, qui se ressemblent les suivantes:tokenizing Strings

<word> <unknown number of spaces and tabs> <number> 

J'ai du mal à trouver des fonctions tokenize avec VBA. Quelle serait la méthode la plus simple pour marquer de telles chaînes dans VBA?

+0

Où prenez-vous les ficelles? Si elles se trouvent dans le document Word, vous pouvez utiliser la fonction intégrée de recherche et de remplacement de Word. – guillermooo

Répondre

3

Vous pouvez lire ligne par ligne et utiliser la fonction de division pour diviser le mot et le nombre par espace. Je me souviens vaguement VBA a la fonction split.

J'ai obtenu le lien suivant en cherchant dans google. Vous ne savez pas quelle version du bureau vous utilisez.

http://msdn.microsoft.com/en-us/library/aa155763(office.10).aspx

Ce lien a la fonction split.

+0

J'ai réussi à diviser la ligne en un tableau de chaînes, disons que ça s'appelle hello(). Le contenu valide est dans la première et dernière entrée de hello(). Comment devrais-je comprendre les tailles de la matrice pour moi d'adresser la première et dernière entrée du tableau, comme la taille du tableau est variable. – stanigator

+0

vous pouvez utiliser ubound (array) pour obtenir le nombre d'éléments. Vous pouvez obtenir la première entrée par array (0) et la dernière entrée par array (ubound (array)). Split renvoie un tableau en 1 dimension. Donc, myarray = split ("bonjour monde", "") debug.print myarray (0) dim élémentCount comme entier elementCount = ubound (myarray) debug.print myarray (elementCount). – shahkalpesh

2

Vous pouvez utiliser la méthode Split() ou pour les matchs plus complexes, vous pouvez utiliser l'objet "vbscript.regexp":

Sub NewRegex() 
    Dim reg 
    Dim matches, match, tmpStr As String 

    Set reg = CreateObject("vbscript.regexp") 
    tmpStr = "blah bla ...." 

    With reg 
     .IgnoreCase = True 
     .MultiLine = False 
     .Pattern = "your regex pattern goes here" 
     .Global = True 
    End With 

    Set matches = reg.Execute(tmpStr) 

    For Each match In matches 
     MsgBox match 
    Next mt 

End Sub 

Voici un tutoriel sur l'utilisation regex de VBA: Using Regular Expressions (RegExp) in Excel

Questions connexes