- ベストアンサー
実行時エラーが表示されます。VBA初心者です。どこを直したらエラーが消えますか?
- 以下のVBAコードを使用すると実行時エラー`91'が表示されます。エラーが消えるように修正するにはどこを直せばよいでしょうか?
- VBA初心者の方が以下のコードを使用すると実行時エラー`91'が表示されます。エラーが消えるように修正するにはどこを直せばよいでしょうか?
- VBA初心者の方が以下のコードを使用すると実行時エラー`91'が発生します。エラーを修正するにはどの部分を修正すれば良いですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もうすぐ70歳を迎える爺ですので、書かれているコードは全く理解不能。そこで、とにもかくにもExcelにコピペして動かしてみました。すると、添付図のような結果をえました。 【修正箇所】 1、オプションで変数宣言を強要にしたこと。 2、Do-Loop に DoEvents を追加したこと。 3、For-Next のL、Mを追加。 3は特に重要な修正です。この場合のLとMはメモリではなくスタックに記憶され高速で参照される可能性があります。ForループのたんびにドキュメントのDIVクラスのテキスト長を参照するやり方よりちょっとだけエレガントかも知れません。教訓として、Option Explicitをモジュールの先頭に必ずが良いと思います。 なお、動作はしましたが内容はチンプンカンプンです。 Option Explicit Sub テスト() Dim I As Integer Dim L As Integer Dim M As Integer Dim S As String Dim obj As Object Dim targetURL As String ' ---------------------------------------------- ' IEオブジェクトのセット ' ---------------------------------------------- Set obj = CreateObject("InternetExplorer.Application.1") obj.Visible = True ' ---------------------------------------------- ' 目的のページを開く ' ---------------------------------------------- targetURL = "http://map.japanpost.jp/pc/syousai.php?id=300197019000" obj.navigate (targetURL) ' ---------------------------------------------- ' 読み込み中の待機 ' ---------------------------------------------- Do While obj.Busy DoEvents Loop ' ---------------------------------------------- ' [str_title_hira]のInnerTextの取得 ' ---------------------------------------------- L = obj.Document.All.tags("div").Length - 1 For I = 0 To L If obj.Document.All.tags("div")(I).classname = "str_title_hira" Then S = obj.Document.All.tags("div")(I).InnerText Range("A1") = S End If Next L ' ---------------------------------------------- ' [unit]のInnerTextの取得 ' ---------------------------------------------- M = obj.Document.All.tags("p").Length - 1 For I = 0 To M If obj.Document.All.tags("p")(I).classname = "unit" Then S = obj.Document.All.tags("p")(I).InnerText Range("A3") = S End If Next M ' ---------------------------------------------- ' 終了処理 ' ---------------------------------------------- obj.Quit End Sub
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
Dim obj as Object で、objを宣言する必要があります。 「どこに宣言を入れれば良いか?」という初心者的おバカな質問はしないように。