VBA: связывание кода Visual Studio с ячейками ввода Excel и листом вывода - PullRequest
0 голосов
/ 28 января 2019

Для проекта очистки веб-страниц я планирую отправлять запросы через определенный порт.Для этой цели мне нужно использовать 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

1 Ответ

0 голосов
/ 28 января 2019
  1. Установите функцию Office / SharePoint как часть программы Visual Studio.

  2. В меню Файл выберите пункт Новый, а затем нажмите Проект.

  3. В панели шаблонов разверните Visual Basic, а затем разверните Office / SharePoint.

  4. В развернутом узле Office / SharePoint выберите OfficeУзел надстроек.

  5. В списке шаблонов проектов выберите Надстройка Excel или Открыть книгу Excel.

=> Таким образомВы должны иметь возможность использовать полную книгу Excel в Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...