我有一個包含html單元格的Excel工作表。我如何批量將它們轉換爲純文本?目前有這麼多無用的標籤和樣式。我想從頭開始編寫它,但如果我可以獲取純文本,它將變得更加容易。將html轉換爲VBA中的純文本
我可以編寫一個腳本來將html轉換爲純文本的PHP,所以如果你不能想到VBA中的解決方案,那麼也許你可以告訴我如何將單元格數據傳遞到網站並檢索數據。
我有一個包含html單元格的Excel工作表。我如何批量將它們轉換爲純文本?目前有這麼多無用的標籤和樣式。我想從頭開始編寫它,但如果我可以獲取純文本,它將變得更加容易。將html轉換爲VBA中的純文本
我可以編寫一個腳本來將html轉換爲純文本的PHP,所以如果你不能想到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
添
提取文本的一種非常簡單的方法是按字符掃描HTML字符,並將尖括號外的字符累積到新字符串中。
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
添的回答是優秀。但是,可以添加小調整以避免一個可預見的錯誤響應。
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
這很好,但請注意,空白處已摺疊。例如'
在我看來,摺疊空格將是「預期的行爲」(除非元素文本使用css保留空格) – 2016-10-02 17:00:05