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,}\<"
のようにエスケープしてみてもだめでした。
先頭の「>」をトルとパターンを認識したため、先頭の「>」が原因かと
思っているのですが解決方法を見つけることができませんでした。
エスケープ方法が不適切なのでしょうか?
解決策をご教示いただけると幸いです。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
chudesoさん
こんにちは。
以下に変更したらできました。
理由は良く分かりませんが、キャリッジリターン・ラインフィードのキャラクターで変換
した方が良いのかも知れません。
re.Pattern = ">(\n){1,}<"
↓
re.Pattern = ">([\r][\n]){1,}<"
お試しください。
早速のご回答ありがとうございます。
教えて頂いたとおり、キャリッジリターン(CR)とラインフィード(LF)で試したところ、希望通りの処理ができました。
山括弧(>)やエスケープに起因する問題ではなく、改行コードが原因だったのですね。。
大変助かりました。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- その他(プログラミング・Web制作) どうしてもエラーが解決できません。 1 2022/07/23 04:32
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GoogleAppsScript文字列置換の...
-
Excel・ユーザーフォームの情報...
-
PowerShellでテキストの空白行...
-
VBscriptで「改行」と「"」を置...
-
正規表現で、特定の文字列を含...
-
VBA 置換文字がみつからない時
-
Eclipse 改行後のタブ
-
アドレスを見れなくするには?
-
document.referrer防御
-
秀丸で数字だけの行を削除したい
-
PerlでUTF-8のファイルの文字列...
-
エクセルVBA 置換のことで...
-
ダブルコーテーション 、"を二...
-
正規表現 特定の文字列を含む行...
-
TeraPadエディターの操作方法に...
-
csvデータ ダブルクォーテ...
-
[Ecxel VBA] 山括弧(>)のエ...
-
秀丸での一括変換について
-
CSVファイルの中で、「 , 」カ...
-
VBA EXCEL あるセルの中の一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
各項目がダブルクォーテーショ...
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
スペースで区切られた氏名から...
-
csvデータのダブルクォーテーシ...
-
csvデータ ダブルクォーテ...
-
GoogleAppsScript文字列置換の...
-
C言語でテキストファイルの内容...
-
正規表現 特定の文字列を含む行...
-
テキストボックスの文字列を置...
-
EXCEL警告「置換対象のデータが...
-
TeraPadエディターの操作方法に...
-
xmlファイル内の文字列置換
-
python 大文字小文字を区別しな...
-
C#で空白行を削除する方法
-
テキストファイル中の文字列の置換
-
Excel VBA 教えてください。 VB...
-
ハングルを日本語に置換
-
EXCEL VBA でCTRL+Fのダイア...
-
PowerShellでテキストの空白行...
おすすめ情報