Итак, в 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 (последняя версия) для этого скрипта.
Спасибо за любую помощь. После нескольких часов попыток заставить эту работу мозг сгорел.