酒井孝志税理士事務所 〒921-8102 金沢市西大桑町9-12 Tel:070-4330-3120 sakai@takassan.sakura.ne.jp お問合せ先メール ここをクリック


手順4 [IE(Internet Explorer)をVBAで操作する方法]

 VBAでWebサイトを操作する場合、一般的には「InternetExplorer(以下「IE」と省略)」で操作する方法を紹介している参考書がほとんどです。
プログラム作成が主目的ではないので、ここからの説明もIEを利用して『国税庁確定申告書等作成コーナー』を操作していきます。

 VBAでIEを操作する場合、事前設定しなければいけないことがあります。


 「ツール」メニューの「参照設定」をクリックし、

IEで『国税庁確定申告書等作成コーナー』開く処理

 次のコードをVBAに入力します。
Sub 作成コーナー1()
Dim objIE As Object
Dim htmlDoc As HTMLDocument
Set objIE = New InternetExplorerMedium
objIE.Navigate "https://www.keisan.nta.go.jp/kyoutu/ky/sm/top_web#bsctrl"
Set htmlDoc = objIE.document

Set htmlDoc = Nothing
Set objIE = Nothing
End Sub
【説明】
上記のコードの説明(イメージ)
IEを開く
Windowsの「スタートメニュー」からIEを選択
確定申告書等作成コーナーのサイトを開く
アドレスバーに「確定申告書等作成コーナーのアドレス」を入力してそのサイトに移動
そのページのソースを取得
サイトのページを右クリックし表示される「ソースの表示」メニューを選択しソースを取得

上記のコードを実行

(後で、シート上にボタンを作成して該当するブログラムを割り当てる方法を紹介するつもりです)。

「Sub/ユーザーフォームの実行」(以下「実行ボタン」)ボタンをクリック

とりあえず実行してみると!
案の定・・・エラー

エラーを解明できない(デバッグ方法がわからない)ために挫折する方が多いです。

エラーを解明する方法

・・・検索エンジンで調べてみること!
Googleで「Documentメソッドは失敗しました iwebbrowser2」と検索して見ると・・・
・・・
今回の場合は、エラーが表示された後にコードを修正することなく「実行」してみると正常に終了してしまう。
[結論]「ページを最後まで読み込むタイミング」と「ページのソースを取得するタイミング」が逆転しているためにエラーとなっていると考えられる。

Sub 作成コーナー1()
Dim objIE As Object
Dim htmlDoc As HTMLDocument
Set objIE = New InternetExplorerMedium
objIE.Navigate "https://www.keisan.nta.go.jp/kyoutu/ky/sm/top_web#bsctrl"

cnt = 0
Do While (objIE.Busy = True Or objIE.readyState < 3)
DoEvents
cnt = cnt + 1
If cnt > 100000 Then Exit Do
Loop


Set htmlDoc = objIE.document

Set htmlDoc = Nothing
Set objIE = Nothing
End Sub
 上記のように、「ページを読み込む処理」と「ソースを取得する処理」の間にコードを追加。
 詳しいことは説明しません・・・「ページを読み込む処理」と「ソースを取得する処理」の間に挿入する定型文
 ※ cnt がある行は、無限ループにならないように念のために付け加えたもの

再度「実行」してみると・・・今度はエラーは表示されませんでした。
なにごともなく・・・?

デバッグの方法

VBAでどのように値を取得しているのかがわからないので、次のコードを追加

   ・・・
       Set htmlDoc = objIE.document
       Debug.Print htmlDoc.Title	
   ・・・
  
 上記のように「ソースの読み込み」処理のコードの後に、
 「Debug.Print [確認したい値:上記の例では、読み込みしたソースのタイトルの値]」を追加
 ・・・実行後、下図のように「イミディエイト ウィンドウ」でその値を確認
 
 「イミディエイト ウィンドウ」が表示されていない場合は、上図のとおり「表示」メニューで・・・。

次へ
©2018-2020KanazawaNoSakai