0
これは私が見逃していたことかもしれませんが、この問題を1週間以上解決しようとしています。IEテーブルの左の列にある各リンクをループするVBA
左の列の各リンクをクリックしてイントラネットテーブルをループしています。各リンクはデータを収集するサブテーブルを呼び出し、ie.backを使用して最初のテーブルに戻り、次のリンクをクリックします。
これは私がこれまで持っているものである: - intanetサイトから
Sub CycleShiftIDs()
Dim Table_Element As MSHTML.IHTMLElementCollection
Dim tbl As Object, Click As Object, td As Object
For Each tbl In Table_Element
If tbl.className = "mytable" Then
For Each td In Table_Element.getElementsByTagName("td")
If td.innerText = "A" Then
Set Click = Table_Element.getElementById("linkOff")
Click.Click
Do While IE.readyState <> 4: DoEvents: Loop
Call GetTableData
End If
Next
Next
End Sub
表のデータは、次のようになります -
<TABLE class=mytable>
<TBODY>
<TR class=ScreenOnlyDispNone bgColor=silver>
<TD style="TEXT-ALIGN: center">Shift</TD>
<TD style="TEXT-ALIGN: center">FullName</TD>
<TD style="TEXT-ALIGN: center">Assc</TD>
<TD style="TEXT-ALIGN: center">Date</TD>
<TD style="TEXT-ALIGN: center">Cases</TD>
<TD style="TEXT-ALIGN: center">Std</TD>
<TD style="TEXT-ALIGN: center">Act</TD>
<TD style="TEXT-ALIGN: center">Perf</TD>
<TD style="TEXT-ALIGN: center">Dy hh:MM:ss</TD>
<TD style="TEXT-ALIGN: center">PickRate</TD></TR>
<TR bgColor=lightblue>
<TD id=tblShiftData style="WIDTH: 35px"><A onclick="RunRptTot _
'60','S'"id=linkOff href="">60</A></TD>
<TD id=tblFullNameData style="WIDTH: 130px"></TD>
<TD id=tblAsscIDData style="WIDTH: 50px"></TD>
<TD id=tblDateData style="WIDTH: 55px"></TD>
<TD id=tblCasesData>561788</TD>
<TD id=tblStdData>128454.98</TD>
<TD id=tblActData>162753.19</TD>
<TD id=tblPerfData style="WIDTH: 50px">78.93</TD>
<TD id=tblhhMMssData style="TEXT-ALIGN: right">113d 00:33:11</TD>
<TD id=tblPickRateData style="WIDTH: 60px">207.11</TD></TR>
<TR bgColor=lightblue>
<TD><A onclick="RunRptTot '61','S'" id=linkOff href="">61</A></TD>
<TD></TD>
<TD></TD>
.........
私が進むべきか上の任意のアイデアを?
次の手順では、私はちょうどこのプロシージャを呼び出すと、最初のテーブルに戻り
Sub GetTableData()
Application.StatusBar = " Collecting the data on performances"
Dim i As Integer
Sheets("Capture").Visible = True
Sheets("Capture").Select
Append = Range("A" & Rows.count).End(xlUp).Row
OffSet1 = 0
Set TR_Element = htmldoc.getElementsByTagName("TR")
For Each HTMLRow In TR_Element
Set TD_Element = htmldoc.getElementsByTagName("TR")_
(OffSet1).getElementsByTagName("TD")
OffSet2 = 0
For Each HTMLCol In TD_Element
Cells(Append, 1).Offset(OffSet1, OffSet2).Value = _
HTMLCol.innerText
OffSet2 = OffSet2 + 1
Cells(Append, 1).Offset(OffSet1, OffSet2).Value = "Picking"
Next HTMLCol
OffSet1 = OffSet1 + 1
Next HTMLRow
IE.GoBack
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
End Sub
です。
あなたは何が起こっているのかを教えて、それがあなたが望むものではないことを説明することで素晴らしいスタートを切りますか?あなたはそれが動作していないことを指定していないので、あなたを助けることは非常に困難です... GetTableDataのコードを使用して、そのステップが何をしているかを見ることができます。 – Dave
コードを実行するたびに、私はいくつかの外部プロシージャーを間違って実行しているというエラーメッセージが表示されます。私はこれを何度も書いたことがあり、テーブルをループするためにいくつかの方法を試しました。特定の側面は「linkOff」や「A」のように一定であることがわかります。ボタンをクリックすることはできますが、次の行に移動してもう一度やり直すことはできません。それは私がそれが私が行方不明である単純なものであることを知っているので、イライラしています。 –