最近、私たちのオフィスは新しいラップトップにアップグレードされました。幸いなことに、Windows 7から10への切り替えやデスクトップからラップトップへの切り替えでは、Pilotdelivers.comでポップアップを有効にする必要がある以外、このマクロの実行に関する問題は発生しませんでした。数週間の間、私たちは2つの異なるラップトップでこのマクロを実行し、すべてがスムーズに行われました。パイロット貨物トラッキングマクロは1台のコンピュータで動作しますが、別のコンピュータでは動作しません
今日、ラップトップの1つでは、マクロは正常に動作しなくなりましたが、もう一方は正常です。ポップアップが有効になっていること、および両方のコンピュータがネットワーク上の同じExcelワークシートから実行されていることを確認しました。私はコンピュータを2回再起動し、他のアプリケーションを開いていない状態でマクロを実行しました。ラップトップは同じモデルで、同時にインストールされます。同一のソフトウェアのインストールと更新。問題を抱えているラップトップは、私のコンピュータに精通していない同僚によって使用されており、動作しているラップトップは私のものです。だから、彼は彼が持ってはいけないと思っていた変更があるかもしれないが、私は何を確認するか分からない。
新しいタブを開くためにリンクをクリックするコード部分をスキップしているようです。
マクロが行うことになっているもの:
- コピーIE
- オープンワークシート上の追跡番号がテキストボックス
- クリックトラック
- 待ちに追跡番号を挿入新しいページを読み込むには
- トラッキング番号をクリックしてください。
- 最初のタブ
- 最新の更新が
- を配信された場合、それが優れて切り替わりそうかどうかを確認して配信入力と 配達日時、そうでない場合はそれを閉じをロードするために新しいタブを待ちます最新の更新を確認して、その行をワークシートに追加します( )。
- コピーをワークシート
- 上の追跡番号オープンIE
- は、テキストボックスに
- クリックトラック を追跡番号を挿入します。マクロがやっているように思える何
- 新しいページが読み込まれるのを待つ
- は、追跡番号lをクリックするとスキップするようです(すでにロードされている)をロードするために、現在のページのインク
- 待機
- 最新のアップデートを探していたときに(それが予想されるページはありませんので)、それは代わりに追跡番号 をつかむ
- それがマークされていますかどうかを確認するためのチェックデリバリー 10。はい、それはそれは、最新の更新を見て、ワークシート
に その行を追加していない場合には、このセクションの一部またはすべてをスキップのように思え、優れて配信入力と 配達日時に切り替わり場合以下
Dim ieDOC As HTMLDocument
Set ieDOC = ie.document
Set htmlColl = ieDOC.getElementsByTagName("a")
For Each htmlInput In htmlColl
If htmlInput.ID = "clickElement" Then
htmlInput.Click
Exit For
End If
Next htmlInput
ie.Quit
Set shellWins = New ShellWindows
If shellWins.Count > 0 Then
Set ie2 = shellWins.Item(1)
End If
全コード:
Sub PilotTracking()
Dim ProURL As String
Dim ie As Object
Dim ie2 As Object
Dim RowCount As Integer
Dim i As Integer
Dim html_Document As HTMLDocument
Dim htmlColl As MSHTML.IHTMLElementCollection
Dim htmlInput As MSHTML.HTMLInputElement
Dim shellWins As ShellWindows
Dim htmlColl2 As MSHTML.IHTMLElementCollection
Dim htmlInput2 As MSHTML.HTMLInputElement
Dim marker As Integer
RowCount = 0
ProURL = "http://www.pilotdelivers.com/"
Do While Not ActiveCell.Offset(RowCount, -5).Value = ""
Set ie = CreateObject("InternetExplorer.application")
With ie
.Visible = True
.navigate ProURL
Do Until Not ie.Busy And ie.readyState = 4: DoEvents: Loop
End With
Set Doc = ie.document 'works don't delete
Doc.getElementById("tbShipNum").innerHTML = ActiveCell.Offset(RowCount, -5).Value 'works don't delete
Doc.getElementById("btnTrack").Click 'works don't delete
Do Until Not ie.Busy And ie.readyState = 4: DoEvents: Loop
i = 0
Do While i < 4
WaitHalfSec
i = i + 1
Loop
Do Until Not ie.Busy And ie.readyState = 4: DoEvents: Loop
Dim ieDOC As HTMLDocument
Set ieDOC = ie.document
Set htmlColl = ieDOC.getElementsByTagName("a")
For Each htmlInput In htmlColl
If htmlInput.ID = "clickElement" Then
htmlInput.Click
Exit For
End If
Next htmlInput
ie.Quit
Set shellWins = New ShellWindows
If shellWins.Count > 0 Then
Set ie2 = shellWins.Item(1)
End If
i = 0
Do While i < 8
WaitHalfSec
i = i + 1
Loop
Do Until Not ie2.Busy And ie2.readyState = 4: DoEvents: Loop
Set htmlColl2 = ie2.document.getElementsByTagName("td")
For Each htmlInput2 In htmlColl2
If htmlInput2.className = "dxgv" Then
If ActiveCell.Offset(RowCount).Value = "" Then
ActiveCell.Offset(RowCount).Value = htmlInput2.innerText
Else
If ActiveCell.Offset(RowCount).Value <> "DELIVERED" Then
ActiveCell.Offset(RowCount, -2).Value = ""
Else
ActiveCell.Offset(RowCount, -2).Value = htmlInput2.innerText
End If
Exit For
End If
End If
Next htmlInput2
ie2.Quit
Set shellWins = Nothing
Set ie = Nothing
Set ie2 = Nothing
RowCount = RowCount + 1
Loop
Set shellWins = Nothing
Set ie = Nothing
Set ie2 = Nothing
End Sub
Sub WaitHalfSec()
Dim t As Single
t = Timer + 1/2
Do Until t < Timer: DoEvents: Loop
End Sub
私は別のアカウントを持っていましたが、ログインが覚えられません。ほとんど私が知っていることは、自分で仕事でグーグルで学んだので、私の知識は非常に特定のものに限られています。ありがとう、結構です。私は自分の投稿が長すぎたことを心配していました。 –
真。誰かがエラーを引き起こしている可能性があることを洞察するかもしれないと思っていました。また、投稿からマクロタグを削除しました。 –
@Timはここからあなたの最善の賭けになるかもしれません:) – pnuts