0

Excel データから html タグを削除するマクロに書き込もうとしています。<*> このパターンを検索して、それらを空白に置き換えたいだけです。また、'“' などの特殊文字や、if(typeof(dstb)!= "undefined"){ dstb();} などのタグも削除する必要があります。

今まで書いたコードでは、ファイル名をマクロにハードコーディングする必要がありますが、これは望ましくありません。

コード:

 Sub UnescapeCharacters()
 sheetname = "2011 Publications" 'file name goes here

Dim sheet As Worksheet
Set sheet = Me.Worksheets(sheetname)

For Row = 1 To sheet.UsedRange.Rows.Count
    For Column = 1 To sheet.UsedRange.Columns.Count
        Dim cell As Range
        Set cell = sheet.Cells(Row, Column)


        ReplaceCharacter cell, "&quot;", """" 
        ReplaceCharacter cell, "&#44;", ""
        ReplaceCharacter cell, "&nbsp;", ""
        ReplaceCharacter cell, "&bull;", ""

        ReplaceCharacter cell, "</ul>", ""
        ReplaceCharacter cell, "<ul>", ""

        ReplaceCharacter cell, "<b>", ""
        ReplaceCharacter cell, "</b>", ""

        ReplaceCharacter cell, "<i>", ""
        ReplaceCharacter cell, "</i>", ""

        ReplaceCharacter cell, "</li>", ""
        ReplaceCharacter cell, "<li>", ""

        ReplaceCharacter cell, "</br>", ""
        ReplaceCharacter cell, "<br />", ""

        ReplaceCharacter cell, "</p>", ""
        ReplaceCharacter cell, "<p>", ""

    Next Column
Next Row

End Sub

Sub ReplaceCharacter(ByRef cell As Range, ByVal find As String, ByVal replacement As     String)

Dim result As String
cell.Value = Replace(cell.Text, find, replacement, 1, -1)

End Sub

誰か助けてくれませんか?

4

1 に答える 1

1

私はこのアプローチでそれを行うことを好みます。HTML が実際の Web サイトでない場合は、HTML をファイルとして保存してから、その filePath を IE.navigate できます。

   Sub testing()
    Dim IE As Object
    Dim stringWithOutTags As String
    Set IE = CreateObject("InternetExplorer.Application")
        ' HardCode the URL address in
        IE.navigate "http://stackoverflow.com/questions/13824872/writing-macro-in-excel-to-remove-html-code"
        Do While IE.Busy
        Loop
        Do While IE.readyState <> 4
        Loop


        stringWithOutTags = IE.document.DocumentElement.innerText

        IE.Quit
    End Sub
于 2012-12-12T07:48:01.963 に答える