2015-02-25 2 views
-2

Я ищу кодировку некоторых VBA .. Это VBA нужно будет получить некоторое значение из ячейки, которая является URL-адресом. VBA должен открыть этот URL-адрес и получить идентификатор класса на этой странице и вернуть значения.Как получить класс id с помощью VBA на EXCEL?

Простенько?

Пример: 1- А1 = www.google.com

2- УВА откроет A1 значения

3- УВА будет получить некоторый идентификатор класса на этой странице.

4- VBA вернет на A2 эти значения.

код от ответа поста OP в

Sub FetchData() 
    With ActiveSheet.QueryTables.Add(Connection:= _ 
     "URL;http://www.google.com", Destination:=Range(_ 
     "$A$1")) 
     .Name = "67083361_zpid" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlEntirePage 
     .WebFormatting = xlWebFormattingNone 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 
+3

Что вы пробовали? Отправьте некоторый код и сообщите нам, что вы не можете понять. – Kyle

+1

HTML может содержать несколько элементов, связанных с определенным * классом *, но должен иметь только один элемент на уникальный * id *. Ваше заявление * «... получить некоторый идентификатор класса на этой странице ...» *, похоже, размывает два атрибута, что делает непонятным то, о чем вы просите. – Jeeped

ответ

0

Я думаю, что это должно вам достаточно:

Public Function GetHttpResponse(URL As String) As String 
    Dim Request As Object, Result As String 
    Set Request = CreateObject("WinHttp.WinHttpRequest.5.1") 
    Request.Open "GET", URL 
    Request.Send 
    Result = Request.ResponseText 
    Set Request = Nothing 
    GetHttpResponse = Result 
End Function 

Public Function GetNodeByPath(ResponseText As String, Path As String) As String 
    Dim Result As String, DOM As Object 
    Set DOM = CreateObject("Msxml2.DOMDocument.6.0") 
    DOM.async = False 
    DOM.validateOnParse = False 
    DOM.LoadXML ResponseText 
    DOM.setProperty "SelectionLanguage", "XPath" 
    Dim NodeList As Object 
    Set NodeList = DOM.SelectNodes(Path) 
    Dim Node As Object 
    Result = "" 
    For Each Node In NodeList 
     Result = Node.Text 
     Exit For 
    Next 
    Set DOM = Nothing 
    Set NodeList = Nothing 
    Set Node = Nothing 
    GetNodeByPath = Result 
End Function 

Тогда вам просто:

=GetNodeByPath(GetHttpResponse("http://website.com/"),"/html/body/div[2]") 

Что означает: извлечь страницы из website.com и получить содержимое второго div бирка внутри body бирка внутри html бирка.

+0

Когда вы говорите ... «Тогда вы просто» .. Что значит ... Я не эксперт по VBA. –

+0

Затем вы просто вставляете эту формулу в ячейку! : D – Taosique

Смежные вопросы