Для проекта очистки веб-страниц я планирую отправлять запросы через определенный порт.Для этой цели мне нужно использовать Microsoft Visual Studio, поскольку консоль Excel VBA не поддерживает такие функции.
Соответствующие веб-ссылки должны, однако, быть непосредственно получены из таблицы Microsoft Excel.Кроме того, результаты веб-очистки должны в идеале передаваться в одну таблицу Excel.Есть ли способ связать Visual Studio с конкретным листом для этой цели?
До сих пор я нашел ответы на использование надстроек VSTO (Инструменты Visual Studio для Office) для Excel, но могНе совсем определился способ применения таких надстроечных инструментов.Ниже приведен код, который я использую, который хорошо работает в Visual Studio, но в нем отсутствует ссылка на Excel, как уже упоминалось.
Imports System.Net
Class Client
Inherits WebClient
Const username As String = "[USERNAME]"
Const password As String = "[PASSWORD]"
Const port = 22225
Public session_id As String = New Random().Next().ToString()
Public Sub New(Optional country As String = Nothing)
Me.Proxy = New WebProxy("[PROXY]", port)
Dim login = username &
If(country IsNot Nothing, "-country-" & country, "") &
"-session-" & session_id
Me.Proxy.Credentials = New NetworkCredential(login, password)
End Sub
Protected Overrides Function GetWebRequest(address As Uri) As WebRequest
Dim request = MyBase.GetWebRequest(address)
request.ConnectionGroupName = session_id
Return request
End Function
End Class
Module TermFinder
Sub Main()
Console.WriteLine("Performing request(s)")
Dim session As New Client()
Dim x%, sheet As Variant
For x = ActiveSheet.Index + 1 To Sheets.Count
Set sheet = Sheets(x)
Next
Dim url As String, lastRow As Long
Dim XMLHTTP As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object
Dim start_time As Date
Dim end_time As Date
Dim var As String
Dim var1 As Object
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Dim cookie As String
Dim result_cookie As String
start_time = Time
Debug.Print "start_time:" & start_time
For i = 8 To 772
url = "[Links to be covered]"
Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
XMLHTTP.Open "GET", url, False
XMLHTTP.setRequestHeader "Content-Type", "text/xml"
XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
XMLHTTP.send
Set html = CreateObject("htmlfile")
html.body.innerHTML = XMLHTTP.responseText
Set objResultDiv = html.getElementById("rso")
Set var1 = html.getElementById("resultStats")
If Not var1 Is Nothing Then
Cells(i, 7).Value = var1.innerText
Else : Cells(i, 7).Value = "0 results"
End If
DoEvents
Next
end_time = Time
Debug.Print "end_time:" & end_time
End Sub
End Module