こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

[Ecxel VBA] 山括弧(>)のエスケープ

Excel2003のVBAで、以下の例のようにHTMLタグ内の強制改行を<br />に置換するマクロを組みたいです。

▼置換前
<ul>
<li>あああ
いいい</li>
<li>ううう</li>
</ul>

▼置換後
<ul>
<li>あああ<br />
いいい</li>
<li>ううう</li>
</ul>


以下のようにVBAを書いてみましたが、置換パターンが認識せず困っています。

=============================
Dim re As Object
Set re = CreateObject("VBScript.RegExp")

re.IgnoreCase = True ' 大文字小文字を区別しない
re.Global = True ' 複数回マッチする
re.MultiLine = True '複数行マッチ

re.Pattern = ">(\n){1,}<" ' 正規表現のパターン
buf = re.Replace(buf, ">@@BRにしない改行@@<") ' 置換

' ここで、残った改行コードを <br /> に置換する(ソース省略)

' ここで、「@@BRにしない改行@@」を改行コードに戻す置換をする(ソース省略)
=============================

テキストエディタでこの正規表現パターンを使えばできたのですが、
Excel VBAでは、この正規表現パターンで抽出できませんでした。

re.Pattern = "\>(\n){1,}\<"

のようにエスケープしてみてもだめでした。
先頭の「>」をトルとパターンを認識したため、先頭の「>」が原因かと
思っているのですが解決方法を見つけることができませんでした。

エスケープ方法が不適切なのでしょうか?

解決策をご教示いただけると幸いです。よろしくお願いいたします。

投稿日時 - 2012-06-13 17:06:08

QNo.7531254

困ってます

質問者が選んだベストアンサー

chudesoさん
こんにちは。
   
以下に変更したらできました。
理由は良く分かりませんが、キャリッジリターン・ラインフィードのキャラクターで変換
した方が良いのかも知れません。

re.Pattern = ">(\n){1,}<"
     ↓
re.Pattern = ">([\r][\n]){1,}<"

お試しください。

投稿日時 - 2012-06-13 19:58:08

お礼

早速のご回答ありがとうございます。

教えて頂いたとおり、キャリッジリターン(CR)とラインフィード(LF)で試したところ、希望通りの処理ができました。
山括弧(>)やエスケープに起因する問題ではなく、改行コードが原因だったのですね。。

大変助かりました。ありがとうございました!

投稿日時 - 2012-06-14 09:38:30

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問