Я пытаюсь перебрать некоторые табличные элементы с веб-сайта в Excel.
Я не новичок в кодировании в целом, хотя я довольно плохо знаком с VBA в смысле Excel:)
Я пытался использовать данные Excel> Из веб-интерфейса, он не распознает таблицу.Я предполагаю, что это потому, что он построен с использованием (или, по крайней мере, это то, что мой Google-Fu заставил меня понять).
Использование того, как выглядит вторая таблица
<html>
<frame title="links" ...>...</frame>
<frame title="queue">
#document
<head>...</head>
<body>
<div id="container>
<script>...</script>
<div>
<table id="oTable">
<colgroup>...</colgroup>
<thead>...</thead>
<tbody>
<tr onclick="changeHighlight( 'eid0' )" id="eid0" class="queryshaded">
<td nowrap=""><a onclick="javascript:window.open('IWViewer.jsp?id=3.5599976.5599976');" title="Open Image" href="javascript:doNothing();"><img title="Open Image" border="0" alt="Open Image" src="URL.gif"></a> <a onclick="javascript:window.open('URL','_newtab');" title="Open Workitem" href="javascript:doNothing();"><img title="Open Workitem" border="0" alt="Open Workitem" src="URL.gif"></a>
</td><td scope="row" nowrap=""><a href="URL" target="_Blank">12345</a></td>
<td nowrap=""><a href="`" target="_Blank">28/08/2018 17:00:49</a></td>
<td nowrap=""><a href="URL" target="_Blank">11/09/2018 16:28:39</a></td>
<td nowrap=""><a href="URL" target="_Blank">5,599,976</a></td>
<td nowrap=""><a href="URL" target="_Blank">dijm</a></td></tr>
<tr onclick="changeHighlight( 'eid1' )" id="eid1" class="queryunshaded">
<td nowrap=""><a onclick="javascript:window.open('IWViewer.jsp?id=3.6443276.6443276');" title="Open Image" href="javascript:doNothing();"><img title="Open Image" border="0" alt="Open Image" src="URL.gif"></a> <a onclick="javascript:window.open('URL;id=3.6443276.6443276','_newtab');" title="Open Workitem" href="javascript:doNothing();"><img title="Open Workitem" border="0" alt="Open Workitem" src="URL.gif"></a>
</td><td scope="row" nowrap=""><a href="URL" target="_Blank">67890</a></td>
<td nowrap=""><a href="URL" target="_Blank">25/06/2019 11:01:01</a></td>
<td nowrap=""><a href="URL" target="_Blank">09/07/2019 10:32:32</a></td>
<td nowrap=""><a href="URL" target="_Blank">6,443,276</a></td>
<td nowrap=""><a href="URL" target="_Blank"></a></td></tr>
<tr onclick="changeHighlight( 'eid2' )" id="eid2" class="queryshaded">
<td nowrap=""><a onclick="javascript:window.open('IWViewer.jsp?id=3.6443287.6443287');" title="Open Image" href="javascript:doNothing();"><img title="Open Image" border="0" alt="Open Image" src="URL.gif"></a> <a onclick="javascript:window.open('URL;id=3.6443287.6443287','_newtab');" title="Open Workitem" href="javascript:doNothing();"><img title="Open Workitem" border="0" alt="Open Workitem" src="URL.gif"></a>
</td><td scope="row" nowrap=""><a href="URL" target="_Blank">23456</a></td>
<td nowrap=""><a href="URL" target="_Blank">25/06/2019 11:01:24</a></td>
<td nowrap=""><a href="URL" target="_Blank">09/07/2019 10:35:30</a></td>
<td nowrap=""><a href="URL" target="_Blank">6,443,287</a></td>
<td nowrap=""><a href="URL" target="_Blank"></a></td></tr>
<tr onclick="changeHighlight( 'eid3' )" id="eid3" class="queryunshaded">
<td nowrap=""><a onclick="javascript:window.open('IWViewer.jsp?id=3.6443339.6443339');" title="Open Image" href="javascript:doNothing();"><img title="Open Image" border="0" alt="Open Image" src="URL.gif"></a> <a onclick="javascript:window.open('URL;id=3.6443339.6443339','_newtab');" title="Open Workitem" href="javascript:doNothing();"><img title="Open Workitem" border="0" alt="Open Workitem" src="URL.gif"></a>
</td><td scope="row" nowrap=""><a href="URL" target="_Blank">78901</a></td>
<td nowrap=""><a href="URL" target="_Blank">25/06/2019 11:06:02</a></td>
<td nowrap=""><a href="URL" target="_Blank">09/07/2019 10:40:39</a></td>
<td nowrap=""><a href="URL" target="_Blank">6,443,339</a></td>
<td nowrap=""><a href="URL" target="_Blank"></a></td></tr>
<tr onclick="changeHighlight( 'eid4' )" id="eid4" class="queryshaded">
<td nowrap=""><a onclick="javascript:window.open('IWViewer.jsp?id=3.6443344.6443344');" title="Open Image" href="javascript:doNothing();"><img title="Open Image" border="0" alt="Open Image" src="URL.gif"></a> <a onclick="javascript:window.open('URL;id=3.6443344.6443344','_newtab');" title="Open Workitem" href="javascript:doNothing();"><img title="Open Workitem" border="0" alt="Open Workitem" src="URL.gif"></a>
</td><td scope="row" nowrap=""><a href="URL" target="_Blank">34567</a></td>
<td nowrap=""><a href="URL" target="_Blank">25/06/2019 11:06:17</a></td>
<td nowrap=""><a href="URL" target="_Blank">09/07/2019 10:40:43</a></td>
<td nowrap=""><a href="URL" target="_Blank">6,443,344</a></td>
<td nowrap=""><a href="URL" target="_Blank"></a></td></tr>
Я пробовал различные решения, которые выглядят примерно так: https://www.ozgrid.com/forum/forum/other-software-applications/excel-and-web-browsers-help/131683-extracting-data-from-a-grid-on-webpage и Очистка данных с веб-сайта с использованием vba
и попытка определить сами фреймы, чтобы попробоватьи получить информацию оттуда?(опять же: новинка в Excel VBA)
'set myHTMLDoc to the main pages IE document
Dim myHTMLDoc As HTMLDocument
Set myHTMLDoc = ie.Document
'set myHTMLFrame2 as the 2nd frame of the main page (index starts at 0)
Dim myHTMLFrame2 As HTMLDocument
Set myHTMLFrame2 = myHTMLDoc.Frames(1).Document
При использовании вышеуказанного блока кода я получаю «Ошибка времени выполнения» 438. Без указанного выше блока я получаю «Ошибка времени выполнения».'1004'
Информация, которую я в конечном итоге хочу получить, находится в каждой строке:
</td><td scope="row" nowrap=""><a href="URL" target="_Blank">67890</a></td>
<td nowrap=""><a href="URL" target="_Blank">25/06/2019 11:01:01</a></td>
<td nowrap=""><a href="URL" target="_Blank">09/07/2019 10:32:32</a></td>
<td nowrap=""><a href="URL" target="_Blank">6,443,276</a></td>
В идеале я хотел бы выгрузить каждый элемент в ячейку
67890 |25/06/2019 11:01:01 |07.09.2009 10:32:32 |6,443,276
На каждой странице по 20 строк (нажмите кнопку, чтобы перейти на следующую страницу, которую я выясню позже ... надеюсь, хаха)
Массивный упреждающий Спасибовсем, кто может помочь:)
-EDIT- Это код, с которым я сейчас работаю (ничего ценного: P)
Private Sub CommandButton1_Click()
Dim ie As Object
Dim html As Object
Dim objElementTR As Object
Dim objTR As Object
Dim objElementsTD As Object
Dim objTD As Object
Dim result As String
Dim intRow As Long
Dim intCol As Long
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "URL"
ie.Visible = True ' loop until page is loaded
Do Until (ie.ReadyState = 4 And Not ie.Busy)
DoEvents
Loop
'set myHTMLDoc to the main pages IE document
Dim myHTMLDoc As HTMLDocument
Set myHTMLDoc = ie.Document
'set myHTMLFrame2 as the 2nd frame of the main page (index starts at 0)
Dim myHTMLFrame2 As HTMLDocument
Set myHTMLFrame2 = ie.Document.querySelector("[title=queue]").contentDocument.getElementById("oTable")
result = myHTMLFrame2
Set html = CreateObject("htmlfile")
myHTMLFrame2 = result
Set objElementTR = html.getElementsByTagName("tr")
ReDim myarray(0 To objElementTR.Length, 0 To 10)
For Each objTR In objElementTR
intRow = intRow + 1
Set objElementsTD = objTR.getElementsByTagName("td")
For Each objTD In objElementsTD
myarray(intRow, intCol) = objTD.innerText
intCol = intCol + 1
Next objTD
intCol = 0
Next objTR
With Sheets(1).Cells(1, 1).Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
.Resize(UBound(myarray), UBound(myarray, 2)).Value = myarray
End With
End Sub