2009-07-11 14 views
3

は、私は、次の似ている私はトークン化したいテキストの周りに100行を、持っている:トークン化文字列

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

私はVBAでトークン化機能を見つけるの問題を抱えています。 VBAでこのような文字列をトークン化する最も簡単な方法は何でしょうか?

+0

どこから文字列を取りますか?実際のWord文書に含まれている場合は、Wordの組み込みの検索機能と置換機能を使用できます。 – guillermooo

答えて

3

1行ずつ読むことができ、分割機能を使用して単語と数字をスペースで区切ることができます。私は漠然とVBAの分割機能を覚えている。

Googleで検索すると、次のリンクが表示されます。使用しているオフィスのバージョンがわからない

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

このリンクスプリット機能を持っています。

+0

私は行を文字列の配列に分割して管理していますが、hello()と呼ばれるとしましょう。有効な内容は、hello()の最初と最後のエントリにあります。配列のサイズが可変であるため、配列の最初と最後のエントリに対処するために、配列のサイズをどのように把握すればよいでしょうか。 – stanigator

+0

ubound(配列)を使用して要素の数を取得できます。 array(ubound(array))によって配列(0)と最後のエントリによって最初のエントリを得ることができます。 Splitは1次元の配列を返します。したがって、myarray = split( "hello world"、 "")debug.print myarray(0)dimCountは整数としてelementCount = ubound(myarray)debug.print myarray(elementCount)。 – shahkalpesh

2

あなたはSplit()メソッドを使用することができますまたはより複雑なマッチのために、あなたは"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 

ここではVBAから正規表現を使用してのチュートリアルです:MSさんからUsing Regular Expressions (RegExp) in Excel

関連する問題