アプリ版:「スタンプのみでお礼する」機能のリリースについて

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,}\<"

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

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

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

A 回答 (1件)

chudesoさん


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

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

お試しください。
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2012/06/14 09:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!