将HTML实体转换为文本的Excel宏

3
我有一个巨大的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

发布您的宏代码... - Dr. belisarius
2个回答

4

创建工作簿的备份。

按下 Alt+F11 打开 VBA 编辑器。

在左侧的树形视图下,双击正在使用的工作簿下的 "This Workbook"。

复制并粘贴以下内容:

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 键。


太棒了。你所说的插入符号(^)在哪里? - ubiquibacon
@typoknig 抱歉,我指的是游标。您可以通过按F5键从VBA编辑器中运行子程序,它将运行游标所在的任何例程。我相信默认工具栏上还有一个小的“播放”按钮。 - Jay
啊,我明白了。我对Excel宏(和VB脚本)还很陌生,但它们非常强大!我修改了您代码中的一点小细节,它完美地运行了...您只是忘记在HTML实体的末尾加上;。感谢您的帮助! - ubiquibacon

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接