Excelmacros将HTML实体转换为文本

我有一个巨大的Excel文件,其中包含在线调查的结果。 构build调查的人在几个方面搞乱了格式化,而我首先需要关心的混乱是将HTML实体转换为常规文本。

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

我已经成功地将我提到的两个HTML实体转换成了文本,但是我不知道如何让macros在整个文件上执行(即,我必须按住macros热键才能执行它)。 ..它是永远)。

如果有一个macros已经可以做我想做的事情,那将是很好的,因为我也可以使用它的一个修改版本为我的下一个任务,以正确的顺序排列所有的列和行。

更新:

这是我的macros的版本search, 。 它的工作,我只需要坚持永久的热键。 如果我可以在整个Excel文件上运行,那么我可以调整每个HTML实体的macros,直到我将它们全部清除。

 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 

创build工作簿的备份。

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 

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

你可以把它作为一个macros运行,或者把插入符号放在“UnescapeCharacters”子程序中,然后按F5

我已经做了一个Excel插件,有这个function: https : //www.youtube.com/watch?v=DGEc6tLaKvA