2013年8月15日木曜日

到達確認ファイルから到達番号・問合せ番号の自動読出

電子申請すると、申請完了直後に、到達確認ファイルの保存を求められる。のちのち、状況を確認したり、公文書をダウンロードしたりするときに必要となる到達番号、問い合わせ番号が記載されているからだ。

同ファイル(HTML)の496文字目に到達番号が、 601文字目に問い合わせ番号が保存されているということは、いくつかの到達ファイルのソースを眺めていると気が付く。

アクセスによる「申請システム」においては、同ファイルを開いたときに(閲覧したときに)
自動的に上記2つの番号を自動的に取得し、申請控えデータをリンクさせて格納している。

エクセルでも同じことができるはずだが、、、、と挑戦してみた。
ところが 496桁目、601桁目の前提となるテキスト全文の取得が思うようにいかない。

で、別な方法を講じてみた。
次でやると、うまく取り出せました。

あらかじめ、エクセルの「格納シート」というsheetに、
パス名、到達確認ファイル名 を2行目から(お好きなだけ)入力しておくと
同行の3列目、4列目に それぞれ 到達番号、問い合わせ番号が表示されるというスグレもの(--;)です。
もっとも、 上記パス名の場所に、実際 到達確認ファイルがないと いけませんデスヨ。

Sub 到達確認Read()
Dim 対象ファイル As Object
Dim i As Integer
Dim 最終行 As Integer
Dim 要素 As Variant
Dim cnt As Integer
Sheets("格納シート").Select
Set 対象ファイル = CreateObject("InternetExplorer.Application")
対象ファイル.Visible = False
最終行 = Cells(65536, 1).End(xlUp).Row

For i = 2 To 最終行

対象ファイル.navigate Cells(i, 1) & Cells(i, 2)

Do While 対象ファイル.ReadyState <> 4
    Do While 対象ファイル.Busy = True
    Loop
Loop

cnt = 0
For Each 要素 In 対象ファイル.document.getElementsByTagName("*")
cnt = cnt + 1
Select Case cnt
   Case 28  '28番目に到達番号が格納されてる
    Cells(i, 3) = 要素.INNERTEXT
    Cells(i, 3).NumberFormatLocal = "0"
   Case 31  '31番目に問い合わせ番号が格納されている
    Cells(i, 4) = 要素.INNERTEXT
 
  End Select
Next
Next i

End Sub


取り出し前
 
 



取り出し後


0 件のコメント:

コメントを投稿