返回列表 上一主題 發帖

請問這個網頁如何用WEB查詢輸入excel

回復 4# jewayy

  1. Option Explicit
  2. Dim IE As Object
  3. Sub 出口報單放行資料查詢()
  4.     Dim 出口報單號碼 As String, n As Object
  5.         出口報單號碼 = InputBox("出口報單號碼", "出口報單放行資料查詢", "BE  02XE580024")
  6.         If 出口報單號碼 = "" Then Exit Sub
  7.         With CreateObject("InternetExplorer.Application")
  8.            .Visible = True
  9.             .Navigate "http://portal.sw.nat.gov.tw/APGQ/GB315?request_locale=zh_TW&declNo=" & 出口報單號碼
  10.             Do While .Busy = True
  11.         DoEvents
  12.         Loop
  13.         For Each n In .document.getelementsbytagname("INPUT")
  14.            If n.Value = "查詢" Then
  15.                 n.Click                        '網頁按下 查詢
  16.                 Exit For
  17.            End If
  18.         Next
  19.         Application.Wait (Time + TimeValue("0:00:03"))  '依網頁下載速度調整等待秒數
  20.         Set IE = .document
  21.         查詢結果
  22.         .Quit
  23.     End With
  24. End Sub
  25. Private Sub 查詢結果()
  26.     Dim Ar(1 To 7), SH As Worksheet
  27.     '***** 網頁的原始檔案的本文
  28.     '<tbody><tr><td colspan="4" class="resultHeader">查詢結果</td></tr>
  29.     '<td class="resultHeader">海空運別</td><td class="result" id="transTypeCd">海</td>
  30.     '<td class="resultHeader" width="25%">出口報單號碼</td><td width="25%" class="result" id="declNo">BE  02XE580024</td>
  31.     '<td class="resultHeader" width="25%">報單類別</td><td width="25%" class="result" id="declType">G5</td>
  32.     '<td class="resultHeader" width="25%">總件數</td><td width="25%" class="result" id="totPackQty">32</td>
  33.     '<td class="resultHeader" width="25%">目的國家代碼</td><td width="25%" class="result" id="destCd">VNCLI</td>
  34.     '<td class="resultHeader" width="25%">總件數單位</td><td width="25%" class="result" id="totPackQtyUnit">PLT</td>
  35.     '<td class="resultHeader" width="25%">報單放行註記</td><td width="25%" class="result" id="examRelNote">Y</td>
  36.     '<td class="resultHeader" width="25%">總毛重</td><td width="25%" class="result" id="totGrossWeight">49376</td>
  37.     '<td class="resultHeader" width="25%">放行日期</td><td width="25%" class="result" id="relDate">102/09/17</td>
  38.     '<td class="resultHeader" width="25%">船舶名稱(海)/航機名稱(空)</td><td width="25%" class="result" id="vslName">UNI-PROSPER                        </td>
  39.     '<td class="resultHeader" width="25%">銷艙註記</td><td width="25%" class="result" id="marketMftNote">Y</td>
  40.     '<td class="resultHeader" width="25%">船舶航次(海)/航機班次(空)</td><td width="25%" class="result" id="voyageFlightNo">1084-186S</td>
  41.     '<td class="resultHeader" width="25%">船舶呼號(海)</td><td width="25%" class="result" id="vslSign">BKHC</td>
  42.     '<input id="statusMsg" type="text" class="msgText uppercase" readonly="readonly" style="width: 775px; color: red;">
  43.      Set SH = ActiveSheet                                 '指定顯示資料的工作表 'ActiveSheet->作用中的工作表
  44.     If InStr(IE.getElementById("statusMsg").Value, "[執行成功]") = 0 Then
  45.         SH.[b2].Resize(7, 1) = Application.WorksheetFunction.Transpose(Ar)
  46.         SH.[d2].Resize(7, 1) = Application.WorksheetFunction.Transpose(Ar)
  47.         Exit Sub
  48.     End If
  49.     Ar(1) = IE.getElementById("transTypeCd").innertext      '海空運別
  50.     Ar(2) = IE.getElementById("declNo").Value               '出口報單號碼
  51.     Ar(3) = IE.getElementById("totPackQty").innertext       '總件數
  52.     Ar(4) = IE.getElementById("totPackQtyUnit").innertext   '總件數單位
  53.     Ar(5) = IE.getElementById("totGrossWeight").innertext   '總毛重
  54.     Ar(6) = IE.getElementById("vslName").innertext          '船舶名稱 (海) / 航機名稱(空)
  55.     Ar(7) = IE.getElementById("voyageFlightNo").innertext   '船舶航次 (海) / 航機班次(空)
  56.     SH.[b2].Resize(7, 1) = Application.WorksheetFunction.Transpose(Ar)
  57.     Ar(1) = ""
  58.     Ar(2) = IE.getElementById("declType").innertext         '報單類別
  59.     Ar(3) = IE.getElementById("destCd").innertext           '目的國家代碼
  60.     Ar(4) = IE.getElementById("examRelNote").innertext      '報單放行註記
  61.     Ar(5) = IE.getElementById("totGrossWeight").innertext   '放行日期
  62.     Ar(6) = IE.getElementById("marketMftNote").innertext    '銷艙註記
  63.     Ar(7) = IE.getElementById("vslSign").innertext          '船舶呼號 (海)
  64.     SH.[d2].Resize(7, 1) = Application.WorksheetFunction.Transpose(Ar)
  65.     SH.Columns.AutoFit
  66. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

http://portal.sw.nat.gov.tw/APGQ/GB315!query?declNo=BE++02XE580024

內容是json格式
{"msg":"[執行成功]","transTypeCd":"海","totGrossWeight":49376,"destCd":"VNCLI","totPackQty":"32","declType":"G5","relDate":"102\/09\/17","totPackQtyUnit":"PLT","declNo":"BE  02XE580024","vslSign":"BKHC","examRelNote":"Y","voyageFlightNo":"1084-186S","marketMftNote":"Y","status":"ok","vslName":"UNI-PROSPER                        "}




可能要下xmlhttp下載
可果要用excel   web查詢,我試過會亂碼,可能還要會轉碼

就要用ie法找到tag按下去,從�堶惕酹able

提供兩個網頁參考:
http://club.excelhome.net/forum.php?mod=viewthread&action=printable&tid=939881

http://blog.csdn.net/a814153a/article/details/9071577

TOP

回復 5# jewayy
我試過直接給網址似乎網站並不會正常顯示資料,
另外從輸入資料後按查詢按紐時,
上方的網址也並沒有因而變動.

或許你應該改成用程式在 出口報單號碼: 旁的輸入框輸入資料,
然後模擬按下 查詢 按紐較易成功查詢到資料.

不過因為我也不太懂 Excel VBA 讀取網頁相關方式,
這就需要其他人來解答了.

TOP

本帖最後由 c_c_lai 於 2013-11-16 17:36 編輯
謝謝您的回覆,不過好像還是沒有反應。

小弟再描述清楚一下,出口報單號碼"BE  02XE580024",BE與02XE中 ...
jewayy 發表於 2013-11-16 17:28

那就改成    BE%20%2002XE580024
  1. http://portal.sw.nat.gov.tw/PPL/pages/integration/layout.jsp?appId=APGQAGB315declNo=BE%20%2002XE580024
複製代碼

TOP

謝謝您的回覆,不過好像還是沒有反應。

小弟再描述清楚一下,出口報單號碼"BE  02XE580024",BE與02XE中間是必須有兩個空格才能查詢成功。
畫面查詢結果如下:


再麻煩各位給予支援,謝謝。
Hi~

TOP

本帖最後由 c_c_lai 於 2013-11-16 15:15 編輯
http://portal.sw.nat.gov.tw/PPL/pages/integration/layout.jsp?appId=APGQAGB315

出口報單號碼:BE  0 ...
jewayy 發表於 2013-11-15 22:02

出口報單號碼:BE  02XE580024 試試成 BE%2002XE580024
  1. http://portal.sw.nat.gov.tw/PPL/pages/integration/layout.jsp?appId=APGQAGB315declNo=BE%2002XE580024
複製代碼

TOP

呵呵,謝謝您的回覆,被說的好像是不懂爬文的小白~~
之前小弟寫這種WEB匯入也不下10個(或許那些網頁比較適合自己粗淺的功力),
在發文之前也爬過文,實在找不到解決的方法才求救大家的。

不曉得高手如您是否有更具建議性的回覆,在此多謝。
Hi~

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題