我有一个包含HTML代码的Excel表格。如何批量将它们转换为纯文本?目前有太多无用的标记和样式。如果我能够获得纯文本,那么重写它会更容易。
我可以编写一个在PHP中将HTML转换为纯文本的脚本,所以如果你想不到VBA的解决方案,那么也许你可以建议我如何将单元格数据传递到网站并检索数据。
我有一个包含HTML代码的Excel表格。如何批量将它们转换为纯文本?目前有太多无用的标记和样式。如果我能够获得纯文本,那么重写它会更容易。
我可以编写一个在PHP中将HTML转换为纯文本的脚本,所以如果你想不到VBA的解决方案,那么也许你可以建议我如何将单元格数据传递到网站并检索数据。
设置对 "Microsoft HTML 对象库" 的引用。
Function HtmlToText(sHTML) As String
Dim oDoc As HTMLDocument
Set oDoc = New HTMLDocument
oDoc.body.innerHTML = sHTML
HtmlToText = oDoc.body.innerText
End Function
蒂姆
Function StripTags(ByVal html As String) As String
Dim text As String
Dim accumulating As Boolean
Dim n As Integer
Dim c As String
text = ""
accumulating = True
n = 1
Do While n <= Len(html)
c = Mid(html, n, 1)
If c = "<" Then
accumulating = False
ElseIf c = ">" Then
accumulating = True
Else
If accumulating Then
text = text & c
End If
End If
n = n + 1
Loop
StripTags = text
End Function
Tim的解决方案非常好,非常有效。
我想做出贡献:使用以下代码在运行时添加“Microsoft HTML对象库”:
Set ID = ThisWorkbook.VBProject.References
ID.AddFromGuid "{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}", 2, 5
它可以在Windows XP和Windows 7上运行。
Option Explicit
一起使用吗? - BenTim的回答非常好。然而,可以添加一个小调整以避免一个可预见的错误响应。
Function HtmlToText(sHTML) As String
Dim oDoc As HTMLDocument
If IsNull(sHTML) Then
HtmlToText = ""
Exit Function
End-If
Set oDoc = New HTMLDocument
oDoc.body.innerHTML = sHTML
HtmlToText = oDoc.body.innerText
End Function
Function HtmlToText(sHTML) As String
Dim oDoc As Object ' As HTMLDocument
If IsNull(sHTML) Then
HtmlToText = ""
Exit Function
End If
Set oDoc = CreateObject("HTMLFILE")
oDoc.body.innerHTML = sHTML
HtmlToText = oDoc.body.innerText
End Function
Application.PlainText()
函数! - Combinatix<p>Lorem ipsum dolor sit amet.</p>
<p>Ut enim ad minim veniam.</p>
<p>Duis aute irure dolor in reprehenderit.</p>
<p>
标签拆分成一个名为“段落”的数组,然后对于每个元素,我使用Tim的答案从HTML中获取文本(非常不错的答案)。Crh(10)
连接起来,用于VBA/Excel。Public Function HtmlToText(ByVal sHTML As String) As String
Dim oDoc As HTMLDocument
Dim result As String
Dim paragraphs() As String
If IsNull(sHTML) Then
HtmlToText = ""
Exit Function
End If
result = ""
paragraphs = Split(sHTML, "<p>")
For Each paragraph In paragraphs
Set oDoc = New HTMLDocument
oDoc.body.innerHTML = paragraph
result = result & Chr(10) & Chr(10) & oDoc.body.innerText
Next paragraph
HtmlToText = result
End Function
<div>this[space][space][space]is</div><div>a[space]test</div>
输出为this[space]isa[space]test
。(对格式不太好的抱歉;当我只是打字时,额外的空格并没有出现。) - Cheran Shunmugavel