Excel宏将HTML实体转换为文本

时间:2011-01-10 17:42:00

标签: html excel text html-entities

我有一个巨大的Excel文件,其中包含在线调查的结果。构建调查的人在几个方面搞砸了格式,我需要先处理的问题是将HTML实体转换为常规文本。

从我所看到的只有两个HTML实体,,",但文档超过12,000行,所以我不能确定没有其他HTML实体使用...如果使用其他HTML实体我希望它们也转换为文本。

我已经成功地创建了一个宏来将我提到的两个HTML实体转换为文本,但我不知道如何在整个文件上执行宏(即我必须按住宏热键来制作它执行......并且它将永远消失。

如果有一个宏已经可以做我想要的那样会很棒,因为我还可以使用它的修改版本来完成下一个按正确顺序排列所有列和行的任务。

更新

这是我搜索,的宏版本。它的工作原理,我只需要按住永远需要的热键。如果我可以在整个Excel文件上运行这个很棒,那么我可以调整每个HTML实体的宏,直到我将它们全部删除。

Sub Macro2()
'
' HTML_Converter Macro
'

'
    Cells.Find(What:=",", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    ActiveCell.Replace What:=",", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.Find(What:=",", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
End Sub

2 个答案:

答案 0 :(得分:3)

创建工作簿的备份。

Alt + F11 打开VBA编辑器。

双击您正在使用的工作簿左下方树视图中的“此工作簿”。

复制并粘贴以下内容:

Sub UnescapeCharacters()

    ' set this to match your case
    sheetname = "Sheet1"

    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)

            ' define all your replacements here
            ReplaceCharacter cell, """, """" 'quadruple quotes required
            ReplaceCharacter cell, ",", ","
        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

这只是迭代指定工作表中的每个单元格,并替换您定义的所有内容。提供的代码替换了您提到的两个字符代码。

您可以将其作为宏运行,或者只将插入符号放在“UnescapeCharacters”子程序中,然后点击 F5

答案 1 :(得分:0)

我已经制作了具有此功能的Excel插件: https://www.youtube.com/watch?v=DGEc6tLaKvA