access 365
いつもお世話になっています。
質問がございます。
テーブルが下記のようになっています。
ID
品番
説明文
説明文のフィールド内に HTMLの記述が入っていまして例えば
<table style="width: 100%;">
<tr>
<th style="width:100%;">型式</th>
<td style="width:100%;">AA1111</td>
</tr>
</table>
<span style="color: red;">あああああ</span>
こちらを置換で
<table>
<tr>
<th>型式</th>
<td>AA1111</td>
</tr>
</table>
<span>あああああ</span>
のようにしたいです。
行いたいのは、
replace([説明文],"<table",">","<table>")
replace([説明文],"<th ",">","<th>")
replace([説明文],"<td ",">","<td>")
replace([説明文],"<span ",">","<span>")
のように置換のルールを並べて記載して
※[説明文]にある <talle から > までを <table> に置き換える
※[説明文]にある <th から > までを <th> に置き換える
※[説明文]にある <td から > までを <td> に置き換える
※[説明文]にある <span から > までを <span> に置き換える
同時に置換を行いたいです。
分かりずらい文章で申し訳ございませんがどなたかご教授いただきたく
よろしくお願いします。
<
置換対象が「文字列」ではなく「ルール」ですから、VBA.Replace関数での実装は難しいでしょう
別案として 正規表現のUDFを利用する方法をご紹介します
■ユーザー定義関数
■SQL ( 文中のテーブル名は実際の名前に置き換えて下さい )
なお、正規表現に馴染みが無い場合は chatGPT あたりを利用し、AI に
というメッセージを送ってみたり、Grok に
とでも尋ねてみると、それなりの例やマニュアルを提示してくれるでしょう
mayuさんから回答があるようにユーザー定義関数を作成することになると思います。
MSはVBScriptは将来的に廃止にする意向のようですのでVBScriptに依存しないものを作成してみました。
「 HTML テキスト内の全ての要素から全ての属性を取り除く」というのが主な目的なのであれば、
「DOM オブジェクトを使用する」という方法も一応は考えられますが、
上記のようなテキストを DOM オブジェクトで扱う場合は、以下の点に留意しなければならないでしょう。
<html>
など最上位のタグで囲まれている状態でパースさせる必要がある。パースされた結果として各行にはインデントが自動的に挿入、調整される。