2016-02-26 356 views
0

我想從'<'刪除所有內容到'>',但以下代碼僅刪除字符串中的第一個'<'並保留其餘HTML標記。VBA從字符串中刪除HTML標記僅刪除第一個字符

這是代碼:

Sub SendHTTP() 
    Dim myRequest As Object 
    Set myRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 

    myRequest.Open "Get", _ 
    "http://tyda.se/search/test?lang[0]=en&lang[1]=sv" 

    'Send 
    myRequest.Send 

    Dim Response, message As String 
    Response = myRequest.ResponseText 

    'Remove HTML tags 
    message = Replace(Response, "<*>", " ", xlPart) 


    'Display message 
    MsgBox message 

End Sub 

我使用公認的答案來自這個問題也試過,但它仍然只是刪除了第一'<'

Remove text between specific tags in Microsoft Excel

+2

也許看着昏暗的文檔作爲MSHTML.HTMLDocument如果你做這樣的事情很多。基本上你可以做一些像tag.innertext這樣的事情,並用它來完成。 –

+0

我不相信你可以使用表達式,就像你在'Replace'函數中的第二個參數那樣。看看使用[正則表達式](https://blog.udemy.com/vba-regex/)。 –

回答

1

的VBA替換功能不能處理通配符,但Range.Replace方法可以。如果將Response變量寫入單元格中,請運行Range.Replace方法,然後將單元格值讀回到消息變量中,它將完成您正在嘗試執行的操作。

示例代碼:

Sub SendHTTP() 
    Dim myRequest As Object 
    Set myRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 

    myRequest.Open "Get", _ 
    "http://tyda.se/search/test?lang[0]=en&lang[1]=sv" 

    'Send 
    myRequest.Send 

    Dim Response, message As String 
    Response = myRequest.ResponseText 

    'Write Response to cell 
    With ThisWorkbook.Sheets(1).Range("A1") 'Change this to a cell that is available for your code to use. 
     .Value2 = Response 
     'Strip HTML tags 
     .Replace What:="<*>", Replacement:=" ", LookAt:=xlPart 
     'Read value back into variable 
     message = .Value2 
     'Clear cell 
     .ClearContents 
    End With 


    'Display message 
    MsgBox message 

End Sub