• 締切済み

VBA  改行でsplitしたい

現在ウェブページから取得した文字列を改行部分でsplitして配列にしたいと考えています。 ob10-6<br /> this is test data ↑このような文字列を取得し、<br />部分で分割したいのですが、 この文字列がtmpという変数に入っているので、 x = split( tmp,"<br />") により、配列xの中に入れようとしたところ、どうも<br />部分で分割されていないようなのです。 vbCrLfなどを代わりに使用してみましたが分割できません。。 なぜ分割できないか、また、分割の仕方を教えていただけると幸いです。 よろしくお願いいたします。

みんなの回答

noname#203218
noname#203218
回答No.2

変数xをVariant以外で宣言していませんか? 又は変数Xは一次配列で必ず配列要素は0から始まります。この場合はx(0),x(1)にデータが格納されます。 Sub test() Dim x As Variant Dim tmp As String tmp = "ob10-6<br /> this is test data" x = Split(tmp, "<br />") MsgBox x(0) & "," & x(1) end sub Split関数の説明は下記参照 http://officetanaka.net/excel/vba/tips/tips62.htm

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

<br> か </br> ではなくて? ⇒無駄な半角スペースもあるようですし。 もう一度取得した文字列を良く見てみるとか?

関連するQ&A

  • Excel97 VBA とVBSのsplit関数

    新しい職場で、Excel VBAでデータを取り込み、それを改行文字ごとにsplit関数で区切って配列に入れようとしました。 arr=split(文字列,vbcrlf) って感じでですね。しかし、なんとその職場のExcelのバージョンが97のため、VBAでsplit関数が使えず、この意図が実現できませんでした。そのため、ネットで調べてVBScriptのsplit関数を流用しようとしたのですが、「終了していない文字列型の定数です。」とエラーが出てしまいます。ソースは次のとおりなのですが、どう直せばいいでしょうか。改行文字で区切るのでなく、カンマなどで区切るのなら、上手く出来るのですが・・・。 Sub sample() Dim vs As Object Dim rtn As Variant Dim q As String Dim buf As String q = Chr$(34) 'ダブルクォーテーション Set vs = CreateObject("ScriptControl") vs.Language = "VBScript" 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 buf = "1" & vbCrLf & "2" & vbCrLf & "3" '改行で区切った文字。実際は、もっと複雑な文字を取り込みます。 rtn = vs.Eval("split(" & q & buf & q & ", vbCrLf)") 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 Debug.Print rtn(1) 'ここで「終了していない文字列型の定数です。」エラーが出る End Sub

  • 改行コードから改行コードまでをスプリットして配列に取り込む方法を教えて

    改行コードから改行コードまでをスプリットして配列に取り込む方法を教えてください。 ファイル「sample.txt」の中に 文字列A 文字列B 文字列C 文字列D 文字列E 文字列F 文字列G と書かれていたとします。このファイルを開き、配列@listに @list = 文字列A\r\n文字列B\r\n文字列C\r\n,文字列D\r\n文字列E\r\n,文字列F\r\n文字列G\r\n となるようなコードを教えてください。 要は二重改行コード\r\n\r\nをスプリッタとして複数の行を配列に取り込む方法です。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • スカラー変数中の改行コードでセパレーションしたい。

    複数行に渡る文字列を含むデータをスカラー変数に格納したのですが 格納後にこれを改行コード(\n)をセパレータとして配列に分けたいと思っています。 データ(abc.txtd)は aaaaaa bbbbbb cccccc といったものです。 $data = "abc.txt"; @array = split (/\n/, $data); としてもうまく配列に分割してもらえないのですが、どうすればよいのでしょうか。 基本的な質問で申し訳ありませんが、どなたかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • エクセルVBAの「split」に関して質問です。

    エクセルのVBAのsplitについて質問なんですがsplitを使って「"」で区切って変数に代入したいのですがうまくいきません。 セル(A1)に「aaaaa"bbbbb"cccccc」という文字列が入っているときに 変数 = Split(Range("A1"), """)とやったのですがうまくいきませんでした。 どうぞよろしくお願いします。

  • rubyのループ文の中でのsplitの挙動について

    宜しくお願いします。 Rubyで配列の中の文字列をsplitして多重配列にしたいと考えています。 例えば @memberという変数の中に [ "012,234,567", "8910,111213,141516", ・・・ ] のような文字列の配列があるとします。 これを(/,/)でsplitして [ ["012","234",567] ["8910","111213","141516"] [・・・] ] (・・・は同じような配列が続いているだけです。) のような配列に変更したいと思っていますが うまくいきません。 @member.each do |mem| mem.split(/,/) end のような書き方でやってみましたが、結果は変化なし。 @member.each do |mem| #mem.split(/,/) mem =mem.split(/,/) #結果の処理内容をここに end と書くと、このループ文の中でしか機能しません。 どのような書き方をすれば変数にsplitした結果を 取り込めるのでしょうか。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • split() 正規表現

    正規表現で / (スラッシュ) .(ドット)にマッチ 正規表現により文字列を分割し、配列に格納する split("[/\.]" $v)としていましたが split関数が使えなくなるので、変わりの方法を考えていますが preg_split()などではうまくいきませんでした。 何か方法を教えて下さい。

    • ベストアンサー
    • PHP
  • Excel マクロ 改行数を求めたい

    いつもお世話になってます。 今Sheet1のC列のデータをSheet2のD列に移すマクロを作っていますが、 Sheet1には1~4行位のセルもあり、それを1行毎に分割してコピーしたいと考えています。 Splitで分割してみたのですが、 tmp = Split(Range("C1"), chr(10)) Sheets("Sheet2").Select Range("D9")=tmp(0) Range("D10")=tmp(1) Range("D11")=tmp(2) Range("D12")=tmp(3) といった感じにすると 改行数が1~3の場合、エラーが出てしまいます。 (実際にはC列にデーターがある分だけ上記を繰り返します。) そこで改行数を求めようとしましたが、 a = InStr(Range("C1"), chr(10)) これでは何行あっても数値(この場合は"a")が10になってしまい、うまくできません。 何かいい手段がありましたらご教授願います。 よろしくお願いします。

  • splitについて教えてください。

    @name=("ひろと","けいた","はやと","りゅうすけ","とらのすけ"); @str=@name; print "@str\n"; @str=join(";",@str); print "<br>@str\n"; @str=split(/;/,@str); print "<br>@str\n"; 上記のような配列を作成したプログラムを実験で作ってみました。(一部抜粋です。htmlで表記されるようにしています。) ブラウザで見てみると、以下のようになりました。 ひろと けいた はやと りゅうすけ とらのすけ ひろと;けいた;はやと;りゅうすけ;とらのすけ 1 その中の3行目の「1」とだけ表示された理由がわかりません。 splitにより、joinで作成された一つの文字列を、 再び「;」で区切って要素数が5つの配列に戻したかったのですが、 なぜか1と返されてしまいました。 splitの使い方を教えていただけないでしょうか。

    • ベストアンサー
    • CGI
  • VBAでSplitエラーです

    環境:Excel2002です   Cells(1, 1)に(1)~(10),(13),(20)~(28)のような値があります   Cells(1, 1)の値は別のプロシージャ求めていてその都度変わります   Cells(j, 4)をスタート位置にして   Cells(j, 4)に(1)~(10)   Cells(j+1, 4)に(13)   Cells(j+2, 4)に(20)~(28)を表示したいので   以下のプロシージャにしました Dim Str As String Str = ActiveSheet.Cells(1, 1).Value Dim i As Integer Dim j As Integer '◆カンマで区切った文字列をD列に格納 Dim tmp As Variant tmp = Split(Str, ",") j = 1 For i = 0 To UBound(tmp) ActiveSheet.Cells(j, 4) = tmp(i) j = j + 1 Next i   あるブックでは正常に動作するのですが   別のブックでは以下のエラーメッセージがでて動作しません   【モジュールではなく、変数またはプロシージャを指定してください】   何が原因なのでしょうか?ご教示願います   Splitを使わない別の方法があればそれでも結構です   とにかく困っています

  • textareaで改行させたい

    textareaにあらかじめ文字列を表示させたいと思っています。表示させる文字列は配列に入れていて、配列には aaa bbb ccc のように改行コードが入っているのですが、下記のようにすると、 <textarea name="name1" id="id1" cols="65" rows="15" wrap="soft"><%=Arr(1,6)%></textarea> aaa<br>bbb<br>ccc<br> と表示されます。 テーブルに表示させると問題なく改行されて表示されるのですが、textareaだと、上記のようになってしまいます。 どのようにすればよいかご教示ください。

専門家に質問してみよう