Поиск HTML многих веб-страниц для одной строки в Excel for Ma c VBA - PullRequest
0 голосов
/ 09 мая 2020

Итак, в MS Excel мне нужно извлечь исходный код из списка веб-страниц, перечисленных в моей электронной таблице, проверить, есть ли конкретная короткая строка в их исходных кодах, а затем вывести да или нет рядом с URL-адресом, чтобы указать, это там.

Я могу заставить это работать отлично в Windows, используя код здесь -

Фрагмент кода A для Windows (адаптированный из кода на MrExcel):

Sub SearchForString()

Dim rngURL As Range
   Dim cll As Range
   Dim stCheck As String
   Dim xmlHttp As Object

   On Error Resume Next
   Set xmlHttp = CreateObject("Microsoft.XMLHTTP")
   If xmlHttp Is Nothing Then
      MsgBox "Unable to create XMLHTTP object, it's probably not installed on this machine", vbCritical
      Exit Sub
   End If

   Set rngURL = Application.InputBox("Select the range of URLs to check", "Select Range", Selection, Type:=8)
   On Error GoTo 0

   If rngURL Is Nothing Then Exit Sub

   stCheck = "STRINGTOCHECK" 

   If Len(stCheck) = 0 Then Exit Sub

   For Each cll In rngURL.Cells
      If CheckURL(xmlHttp, cll.Value, stCheck) Then
         cll.Offset(, 1).Value = 1 
      End If
   Next cll

End Sub

Private Function CheckURL(ByRef xmlHttp As Object, ByVal url As String, ByVal stCheck As String) As Boolean
   Dim stResult As String

   If Not LCase$(url) Like "https://*" Then
      url = "https://" & url

   End If

   xmlHttp.Open "GET", url, False
   xmlHttp.Send ""

   If xmlHttp.readyState = 4 Then
      If xmlHttp.Status = 200 Then
         stResult = xmlHttp.responseText

         If InStr(1, stResult, stCheck, vbBinaryCompare) > 0 Then
            CheckURL = True

       End If
     End If
   End If
End Function

В Ma c вы не можете использовать Microsoft XML .HTTP или XMLHtmlObject, потому что, ну, Microsoft ненавидит Mac.

Теперь все, что я могу найти для получения информации с веб-сайта Excel для Ma c, - это приведенный ниже фрагмент кода. Когда я использую его в Ma c, он просто выгружает текст веб-страницы в электронную таблицу.

Фрагмент кода B для Ma c:

Sub MakeWebQuery()
   With ActiveSheet.QueryTables.Add(Connection:= _
       "URL;https://www.yahoo.com", Destination:=Range("A1"))
       .PostText = "local"
       .Name = False
       .FieldNames = False
       .RefreshStyle = xlInsertDeleteCells
       .RowNumbers = False
       .FillAdjacentFormulas = False
       .HasAutoFormat = True
       .RefreshOnFileOpen = 1
       .BackgroundQuery = False
       .TablesOnlyFromHTML = True
       .SaveData = True
       .Refresh BackgroundQuery:=False
       .UseListObject = False
   End With
End Sub

Теперь я борюсь с - Как я могу адаптировать эту Ma c -дружественный код (фрагмент b) для выполнения того, что делает код Windows (фрагмент a)?

Я знаю, что есть гораздо лучшие языки, которые могут выполнять эту работу быстрее, но я хочу позволить Новички легко используют мою электронную таблицу для своих задач, и Excel для них не так страшен, как командная строка. Это также означает, что им не нужно устанавливать Python или JSoup на свои корпоративные устройства.

Очевидно, это возможно в коде Windows Excel, поэтому мне просто нужно решить, как я могу адаптировать свой код Windows для доступа к коду HTML в Ma c VBA. Я собираюсь использовать MS Excel для Ma c 12.0 (последняя версия) для этого скрипта.

Спасибо за любую помощь. После нескольких часов попыток заставить эту работу мозг сгорел.

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