EXCEL超初心者マクロ(4)-SAGAWA(佐川急便)とJP(郵便局)荷物お問い合わせ-

2018年5月24日EXCEL/ACCESS

クロネコヤマト(ヤマト運輸)SAGAWA(佐川急便)とJP(郵便局)荷物お問い合わせ(宅急便番号調査)作ってみた。

前回、クロネコヤマトの宅急便でおなじみのヤマト運輸の荷物お問い合わせをexcelで作ってみましたが、佐川急便と郵便局も作ってみました。
※郵便局テストしてみたらおかしいので、時間ができたら修正します。

【背景】
個人のかたは、1件ずつの宅急便伝票番号検索しますよね。会社で荷物を発送している場合、まとめて大量に検索したいことってありませんか?
B2クラウドとかで出荷していると、ある程度の追跡ができるのですが、ちょっと使いづらいです。自分も以前、メール便(今はDM便)1000通の配達状況を調べなければならない事があり、そのときにグぐって作成したのが始まりです。後にHPの構造が変わってしまい放置していたのを、再構築しています。

問い合わせ番号を網羅していないので検証は終わっていませんが、多分使えると思います。
※フリーソフトと言うと恥ずかしいですが、勉強にどうぞ。ただ、責任は取れませんのでよろしく

メインEXCEL:Sample_4

【注意】
・このEXCELは自由にご使用いただいて結構ですが、使用による損害等は一切受けませんのでご了承ください。※フリーでご使用ください。
・各ホームページの構造が変わると修正が必要となります。
・パソコンの環境によって、動かない、遅い、エラーになる等あります。
・マクロの中に簡単な説明が書いてありますので、ご参考にください。

【内容】はhttp://www.bookservice.jp/2018/05/10/post-725/と同じです

 

 

以下、内容です。見づらいですがご容赦ください。ダウンロードするともう少し見やすいです。


SAGAWA

‘ ***処理確認***
MSG_FLG = MsgBox(“準備OKですか?”, vbYesNo)
If MSG_FLG = vbNo Then
Exit Sub
End If

‘######## C:F クリア #########
Sheets(“sagawa”).Select
Columns(“D:F”).Select
Selection.ClearContents
Range(“A1”).Select

Set set_data01 = Worksheets(“sagawa”).Range(“A2”)

set_data01.Offset(-1, 3).Value = “検索/伝票番号”
set_data01.Offset(-1, 4).Value = “更新日”
set_data01.Offset(-1, 5).Value = “配達状況”

CNT02 = 0

Do Until set_data01.Offset(0, 0).Value = “”

‘######### 宣言
Set IEOPEN = CreateObject(“InternetExplorer.Application”)
IEOPEN.Visible = True

‘######### 問い合わせをダイレクトにIEでopen
IEOPEN.navigate “http://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?okurijoNo=” & set_data01.Offset(0, 1).Value

‘######### 1秒待つ
‘ waittime = Now + TimeValue(“00:00:01”)
‘ Application.Wait waittime

‘######### IEの起動を待つ

CNT01 = 0
Do While IEOPEN.Busy = True Or IEOPEN.readyState <> 4
DoEvents
Application.Wait (Now + TimeValue(“00:00:01”))
CNT01 = CNT01 + 1
If CNT01 >= 10 Then
‘ページの再読み込み(リフレッシュ)
IEOPEN.Refresh
CNT01 = 0
End If
Loop

‘######### 1秒待つ

‘ waittime = Now + TimeValue(“00:00:01”)
‘ Application.Wait waittime

‘######### 各データクラスの一件目を取込む ※状態は3件目から 構造による
wct = IEOPEN.document.getElementsByClassName(“state2”)(0).innerText
whiduke = IEOPEN.document.getElementsByClassName(“nowrap”)(3).innerText
wdenpyo = IEOPEN.document.getElementsByClassName(“nowrap”)(1).innerText

‘######### 取込んだデータをexcelに貼り付け ※分かりやすいように分けています。
set_data01.Offset(0, 3).Value = wdenpyo
set_data01.Offset(0, 4).Value = whiduke
set_data01.Offset(0, 5).Value = wct

‘######### ie close ※溜まらないように

IEOPEN.Quit
Set IEOPEN = Nothing
CNT02 = CNT02 + 1
Application.StatusBar = “取込み開始 >” & CNT02 & ” 件”

‘######### 念のため
CNT02 = CNT02 + 1
If CNT02 > 500 Then
MsgBox (“STOP 500ken あとで IEキャッシュクリアしてください”)
CNT02 = 1
End If

‘######### 次の行
Set set_data01 = set_data01.Offset(1, 0)

Loop

MsgBox (“終了”)
Application.StatusBar = “処理終了....(v^^)”


JP(郵便局)

MSG_FLG = MsgBox(“準備OKですか?”, vbYesNo)
If MSG_FLG = vbNo Then
Exit Sub
End If

‘######## C:F クリア #########
Sheets(“郵便局”).Select
Columns(“D:F”).Select
Selection.ClearContents
Range(“A1”).Select

Set set_data01 = Worksheets(“郵便局”).Range(“A2”)

set_data01.Offset(-1, 3).Value = “検索/伝票番号”
set_data01.Offset(-1, 4).Value = “更新日”
set_data01.Offset(-1, 5).Value = “配達状況”

CNT02 = 0

Do Until set_data01.Offset(0, 0).Value = “”

‘######### 宣言
Set IEOPEN = CreateObject(“InternetExplorer.Application”)
IEOPEN.Visible = True

‘######### 問い合わせをダイレクトにIEでopen
IEOPEN.navigate “http://tracking.post.japanpost.jp/service/singleSearch.do?org.apache.struts.taglib.html.TOKEN=&searchKind=S002&locale=ja&SVID=&reqCodeNo1=” & set_data01.Offset(0, 1).Value

‘######### 1秒待つ
‘ waittime = Now + TimeValue(“00:00:01”)
‘ Application.Wait waittime

‘######### IEの起動を待つ

CNT01 = 0
Do While IEOPEN.Busy = True Or IEOPEN.readyState <> 4
DoEvents
Application.Wait (Now + TimeValue(“00:00:01”))
CNT01 = CNT01 + 1
If CNT01 >= 10 Then
‘ページの再読み込み(リフレッシュ)
IEOPEN.Refresh
CNT01 = 0
End If
Loop

‘######### 1秒待つ

‘ waittime = Now + TimeValue(“00:00:01”)
‘ Application.Wait waittime

‘######### 検索結果チェック
If InStr(IEOPEN.document.body.innerHTML, “お問い合わせ番号が見つかりません”) > 0 Then

Application.StatusBar = “お問い合わせ番号が見つかりません。…ですって!!”
set_data01.Offset(0, 3).Value = “”
set_data01.Offset(0, 4).Value = “”
set_data01.Offset(0, 5).Value = “お問い合わせ番号が見つかりません。”
GoTo skip1

End If

‘######### 各データクラスを取込む
Set OBJA = IEOPEN.document.getElementsByClassName(“w_150”)
Set OBJB = IEOPEN.document.getElementsByClassName(“w_120”)
For n = 0 To OBJA.Length – 1

wct = IEOPEN.document.getElementsByClassName(“w_150”)(n).innerText ‘
whiduke = IEOPEN.document.getElementsByClassName(“w_120”)(n).innerText ‘

Next
‘######### 各データクラスの一件目を取込む ※状態は3件目から 構造による
wdenpyo = IEOPEN.document.getElementsByClassName(“w_180”)(1).innerText

‘######### 取込んだデータをexcelに貼り付け ※分かりやすいように分けています。
set_data01.Offset(0, 3).Value = wdenpyo
set_data01.Offset(0, 4).Value = whiduke
set_data01.Offset(0, 5).Value = wct

skip1:

‘######### ie close ※溜まらないように

IEOPEN.Quit
Set IEOPEN = Nothing
CNT02 = CNT02 + 1
Application.StatusBar = “取込み開始 >” & CNT02 & ” 件”

‘######### 念のため
CNT02 = CNT02 + 1
If CNT02 > 500 Then
MsgBox (“STOP 500ken あとで IEキャッシュクリアしてください”)
CNT02 = 1
End If

‘######### 次の行
Set set_data01 = set_data01.Offset(1, 0)

Loop

MsgBox (“終了”)
Application.StatusBar = “処理終了....(v^^)”


宅急便・調査・検索・EXCEL・マクロ・サンプル・フリーソフト

EXCEL/ACCESS

Posted by master