[[20100502205005]] 『文中のhtmlタグ一括削除』(みっこ) ページの最後に飛ぶ

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

 

『文中のhtmlタグ一括削除』(みっこ)

商品データのある列に商品説明があるのですが、説明文以外にhtmlタグがあり、説明文だけを残してこれらのタグを一括で削除する方法はないでしょうか。

例)

高級感あふれるモダンなベッドです<br />最高の寝心地<strong>ポケットコイルベッド</strong>!<br /><span style="font-size: small">

↓↓

高級感あふれるモダンなベッドです。最高の寝心地ポケットコイルベッド!

Windows7 Excel2007 です。


 「検索と置換」で、
 検索する文字列を「<*>」にして、置換後の文字列を空白のままで「置換」ではいかが?
 (kei)

 Sub okikaed()
   Dim rng As Range, txtrng, rtxt, acsheet As String, rngtxt

   acsheet = ThisWorkbook.ActiveSheet.Name
      On Error Resume Next
   Set rng = Application.InputBox(Title:="変換したい対象セル", Prompt:="セルを選択", Type:=8)
   rngtxt = rng.Value

   txtrng = rng.Address(RowAbsolute:=False, ColumnAbsolute:=False)
   If txtrng = Empty Then Exit Sub
   Set rng = Application.InputBox(Title:="変換後セル", Prompt:="セルを選択" & Chr(13) & Chr(10) & _
               " キャンセルすると変換したい対象セルが変更になります。", Type:=8)
   rtxt = Application.InputBox(Title:=txtrng & "セルの削除文字は?", Prompt:="削除文字", Type:=2)

   Range(txtrng).Replace What:=rtxt, Replacement:=""  '
   rtxt = Range(txtrng).Value
   Range(txtrng).Value = rngtxt
   Range(rng.Address) = rtxt
   rng.Replace What:="#N/A", Replacement:=""
End Sub
初歩的なマクロですみません。
(あけ)

 UDFです。

 1) Alt + F11 でVBEを起動
 2) [挿入] - [標準モジュール] - 右空白部分に下記コードを貼り付ける
 3) Alt + Q でエクセルに戻る

 A1に文字列があると仮定して、任意のセルに
 =ReplaceHTMLTag(A1)

 Function ReplaceHTMLTag(ByVal txt As String) As String
 With CreateObject("vbscript.regexp")
     .Pattern = "<[^>]*>"
     .Global = True
     ReplaceHTMLTag = .Replace(txt, "")
 End With
 End Function

 (seiya)

 seiyaさん貴重なコードありがとうございました。
参考にします。^。^
(あけ)

 解決済みですけれど、参考出品で。
 もちは餅屋ということでブラウザに表示された文字を取得する例です。
 A1 に入力された HTML 文を A2 に取得しています。
 (Mook)

 Option Explicit
 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

 Sub GetPlaneText()
    Const TempHTML = "C:\XLtemp.html"

    Dim objIE
    Set objIE = CreateObject("InternetExplorer.Application")

    Dim objFso
    Set objFso = CreateObject("Scripting.FileSystemObject")

    objFso.CreateTextFile(TempHTML).Write Range("A1").Value
    objIE.Navigate TempHTML

    While objIE.Busy = True Or objIE.ReadyState <> 4
        DoEvents
        Sleep 100
    Wend

    Range("A2").Value = objIE.Document.Body.InnerText
    objFso.DeleteFile TempHTML
    objIE.Quit
 End Sub

コメント返信:

[ 一覧(最新更新順) ]


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