2016-02-26 3 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

Может быть, посмотреть в Dim документ Как MSHTML.HTMLDocument если вы делаете такого рода вещи много. В основном вы можете сделать что-то вроде tag.innertext и сделать с ним. –

+0

Я не верю, что вы можете использовать выражение, подобное тому, которое вы делаете в качестве второго аргумента в функции «Заменить». Посмотрите на использование [регулярных выражений] (https://blog.udemy.com/vba-regex/). –

ответ

1

УВА Replace функция не может обрабатывать символы , но метод 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