[[20080813123219]] 『VBAでの改行コードを含む置換』(Excel2003) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでの改行コードを含む置換』(Excel2003)
 質問させてください。
 セルに入っているデータからHTMLを調整しようとマクロを組みました。
 が、置換で問題が起きました。
 改行コードを含むとダブルコーテーションがうまく置換されないのです。

 以下のコードで置換すると
 Selection.Replace What:="</font>", Replacement:="</h2>" & vbNewLine & "<ul class=""shop"">"

 結果が以下になります。
 </h2>
 <ul class=""shop"">"

 希望は
 </h2>
 <ul class="shop">

 なのですが、どうやったらうまくいくのでしょうか?
 宜しくお願い致します。


 こちらで試しましたが、「希望は」の結果になりましたよ?
 置換前の文字列を再度確認されてはどうでしょうか?
 (ROUGE)

 言葉足らずで、済みません。
 エクセル上は希望結果の様に見えるのですが
 実際にセルをエディターなどにコピペすると上の結果になってしまうんです。
 セル内をコピーすると余分な " が入らずにうまくいくのですが
 出来たデータを範囲コピペしたいもので;

 また、セル内の改行を置換に含まなければ " がダブると言う事も無いみたいです。
 (Excel2003)

 問題は「置換した」と言う事ではなく
 「セル内改行をした」と言う事のように思います。

 セルに直接入力した文字でも、セル内改行(Alt + Enter)が有るものは
 ""で囲われて貼り付きますので。。。。

 例えば <FONT>ABC</FONT>を</FONT>の前でセル内改行してメモ帳に貼り付けると
 "<FONT>ABC(↑改行コード)</FONT>"
 となります。

 エディタの方で置換するのでは駄目なのですかね?

 (HANA)

 HANAさんありがとうございます。
 ホントですね;
 仕様なんでしょうか

 エディタで置換もいいのですが、なるべく貼り付ける作業だけで完了したいので
 行を追加して分けるようにします!

 ありがとうございました。
 (Excel2003)

 >行を追加して分けるようにします!
 って言うのは、どういう方針なのですかね?

 データの配置が良く分からないので、
 そのままでは使えないかもしれませんが・・・

 ↓vbNewLineの改行コードが有った場合、
  そこでデータを区切り下の行へ移動させます。
  A列の値に対して処理を行い、結果をB列に書き出します。
Sub 下の行へ()
Dim i As Long, j As Integer, data
Dim tbl, x, xi As Integer
    ReDim x(1 To Rows.Count, 1 To 1)
    tbl = Range("A1", Range("A" & Rows.Count).End(xlUp))
    For i = 1 To UBound(tbl, 1)
        If tbl(i, 1) Like "*" & vbNewLine & "*" Then
            data = Split(tbl(i, 1), vbNewLine)
            For j = 0 To UBound(data)
                xi = xi + 1
                x(xi, 1) = data(j)
            Next j
        Else
            xi = xi + 1
            x(xi, 1) = tbl(i, 1)
        End If
    Next i
    Range("B:B").Clear
    Range("B1").Resize(xi, 1) = x
End Sub

 (HANA)

 わざわざ、コードまでありがとうございます。
 データー自体は割りと単純なので下記のようにしてしまいました
 ココに載せるのは恥ずかしいのですが;

 Set VBLF1 = Cells.Find(vbNewLine)
 Do
    If Not VBLF1 Is Nothing Then
    VBLF1.Activate
    CLEN = Len(ActiveCell)
    kaigyo = InStr(ActiveCell, vbLf)
    bef = Left(ActiveCell, kaigyo - 1)
    aft = Right(ActiveCell, CLEN - kaigyo)
    ActiveCell.Offset(1, 0).Insert shift:=xlDown
    ActiveCell.Replace what:=vbLf & aft, replacement:=""
    ActiveCell.Offset(1, 0) = aft
    End If
    Set VBLF1 = Cells.Find(vbLf)
  Loop While Not VBLF1 Is Nothing

 HANAさんのコードを参考に勉強させて頂きますね。
 ありがとうございました。


 あ、いやいや それでよいと思いますよ。
 一つずつ確認しないので そちらの方が良いかもしれません。
 ・・・見つかったらその都度行の挿入が有るので
 少し時間が掛かるかもしれませんが・・・
 実際問題としては、気にならないと思いますし。

 データ内容が分からないので駄目かもしれませんが
 通常は</FONT>の後は何もないと思います。

 それなら、一度</FONT>を捜して置換して
      vbNewLine を捜して処理(行を分ける)をしなくても
 </FONT>を捜して </h2> に変更し、行挿入して
 <ul class="shop"> を入力 でも
 良いのかもしれません・・・。

 ・・・実際に試した訳ではないので、ご参考程度に。

 (HANA)

 テキストボックスでやればいいような気がする。(アカギ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.