2016-11-26 4 views
0

Blue Dartのようなさまざまなサービスプロバイダから私の通常の宅配便の配送状況を自動化したいと思います。VBAを使用して現在の開いているWebページからデータをエクスポートできません

私はDocket番号を持っています。私はVBAを使って同じことを試みましたが、ウェブページからデータを取得できませんでした。

マイコードはホームページのセルからDocket番号を入力してから、配送ステータスが表に記載されている他のページにリダイレクトされます。

Sub GetCourseList() 

Dim IE As Object 
Set IE = CreateObject("InternetExplorer.Application") 

Dim IEWindows   As SHDocVw.ShellWindows 
Dim IEwindow   As SHDocVw.InternetExplorer 
Dim IEDocument   As MSHTML.HTMLDocument 
Dim BreadcrumbDiv  As MSHTML.HTMLElementCollection 

Set IEWindows = New SHDocVw.ShellWindows 

'create new instance of IE. use reference to return current open IE if 
'you want to use open IE window. Easiest way I know of is via title bar. 
    IE.Navigate "http://www.bluedart.com/maintracking.html" 
'go to web page listed inside quotes 
    IE.Visible = True 
    While IE.busy 
    DoEvents 'wait until IE is done loading page. 
    Wend 
    IE.Document.All("numbers").Value = ThisWorkbook.Sheets("sheet1").Range("A1") 
    Application.SendKeys "~" 

    Dim URL As String 
    Dim qt As QueryTable 
    Dim ws As Worksheet 

    Set ws = Worksheets.Add 
    For Each IEwindow In IEWindows 
    If InStr(IEwindow.LocationURL, "your URL or some unique string") <> 0 Then ' Found it 
    Set IEDocument = IEwindow.Document 

    URL = IEwindow.LocationURL 

    Set qt = ws.QueryTables.Add(_ 
    Connection:="URL;" & URL, _ 
    Destination:=Range("F1")) 

     With qt 
     .RefreshOnFileOpen = True 
     .Name = "bluedart" 
     .FieldNames = True 
     .WebSelectionType = xlAllTables 
     .Refresh BackgroundQuery:=False 

    End With 
End If 
Next 
End Sub 
+0

シートの値をテストするための値はありません。正確に動作しないものはありません。いくつかの行にエラーがありますか?また、プロシージャの最上部で 'Option Explicit'を使って、' IE.busyまたはIE.Readystate <> 4'、 'ThisWorkbook.Sheets(" sheet1 ")。Range(" A1 ")。value2'を呼び出し、' SendKeys'それは信頼できないためです。これらは良い習慣であり、この特定の問題に対する直接の解決策ではありません。 –

+0

追跡番号50419480764または50419669171の例:私はどんなエラーも出ていませんが、たとえそれが空白であるかのようにデータを取得しないとしても、 – Eager

答えて

0

あなたのコードは、Docket番号を入力して何らかの方法で確認した後に生成されたページと対話しようとしません。それはによって行うことができます。

エミュレートするブラウザ対話、Internet Explorerを使用できます整理番号が入力された後にページ上の要素を「移動」をクリックし、使用:それも作成することによって達成することができ

While IE.Busy Or IE.Readystate <> 4 
    DoEvents 
Wend 

適切なパラメータ(Docket Numberを含む)でのPOST要求。このリンクを開くには

http://www.bluedart.com/servlet/RoutingServlet

試してみてください。そのURLはこれです、これが達成された後も

、まだ、このページからクエリによるデータを取得することはできません。このURLのコンテンツはPOSTメソッドを使用して生成され、コンテンツを正しく生成するために必要なパラメータはURLに含まれていないため、何も表示されません。

クエリの代わりに、私が言及した両方の方法のHTMLドキュメントで、テーブルなどのHTML要素を見つけることでデータにアクセスできます。

+0

、ありがとうございます。 それはポストメソッドを介して呼び出しているので、それは問題です。私はIEで現在開いているページからデータを取得したいと思います。 どのように私はそれを達成することができます。 – Eager

関連する問題