• 締切済み

VBA オブジェクトが必要です

ie.Document.getElementById("menu_2").Click で、オブジェクトが必要ですというエラー”424”が発生します やってることはIE操作でウェブページのメニューをクリックするという内容です いかに全コードを記載します Sub ********() Set ie = CreateObject("InternetExplorer.Application") 'IE起動 ie.Visible = True ie.Navigate "************" '開きたいサイトのURLを指定  Call IEWait(ie) 'IE待機 ie.Document.getElementsByname("${loginForm.loginId}")(0).Value = "**********" ie.Document.getElementsByname("${loginForm.password}")(0).Value = "*********" ie.Document.getElementsByname("Image7")(0).Click Call IEWait(ie) 'IE待機 ie.Document.getElementsByname("Image1")(0).Click Call IEWait(ie) 'IE待機 ie.Document.getElementById("menu_2").Click Call IEWait(ie) 'IE待機 End Sub 自分としてはie.Document.getElementsByname("Image7")(0).Clickでエラーが出ないのに getElementByIdではオブジェクトが必要と言われidで取得なのかnameで取得なのかしか、かわらないのにオブジェクトが必要です、となる意味がわからないです。 どなたかご教授お願いします。

みんなの回答

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

ie.Document.getElementsByname("Image1")(0).Click のコードで、新しいウィンドウやタブが開いたら、 それをieオブジェクトにセットする必用があるのでは Dim objShell As Object Set objShell = CreateObject("Shell.Application") ・   ・    ・  >ie.Document.getElementsByname("Image1")(0).Click >Call IEWait(ie) 'IE待機 '最後に開いたウェブページorエクスプローラをieにセットする Set ie = objShell.Windows(objShell.Windows.Count - 1) >ie.Document.getElementById("menu_2").Click

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

お示しのコードを単純に読むと、取得しようとするサイトに、<tag id="menu_2" ...> はありますか? ご参考okwave http://okwave.jp/qa/q5290507.html

montbell60
質問者

補足

クリックしたいのが<a title="新規物件登録" class="menu_btn" id="menu_2" href="MNU1R0001_f.action?id=1377259258189" target"_parent"/> となっています。 id="menu_2"は存在しています どうしたらいいですか?

関連するQ&A

  • VBAでオブジェクトがありません、となってしまう

    VBAを実行すると、 実行エラー424 オブジェクトが必要です。 となってしまいます。 エラーとなっている行は、 .Document.getElementById("q_d").Value = ActiveSheet.Cells(rowno, 1).Value です。 作成したリストは、以下のようになっています。 Sub MAP住所() Dim objIE As Object, rowno As Integer rowno = 1 Set objIE = CreateObject("InternetExplorer.Application") With objIE 'Google Map起動 .Navigate "http://maps.google.co.jp/" .Visible = True Do While (ActiveSheet.Cells(rowno, 1).Value <> "") 'IE待機 Do While .Busy = True DoEvents Loop '住所をテストボックスへ入力 .Document.getElementById("q_d").Value = ActiveSheet.Cells(rowno, 1).Value '送信ボタンクリック .Document.forms(0).submit '次の行 rowno = rowno + 1 Loop End With Set objIE = Nothing End Sub A列にある住所を読み込んで、グーグルマップに表示するスクリプトになります。 どう直して良いのか、皆目わかりません 御指南願います

  • VBAで424エラーが出るPCと出ないPCがある

    マクロ初心者なのですが、ブラウザを操作していき、自動でフォーム登録を繰り返すプログラムを組みました。 職場のPC(win7 Excel2013 IE11)と自宅PC(win7 Excel2003 IE11)で確認したところ、問題なく動作していたのですが、依頼者の環境(win7 Excel2013 IE11)ではソース最後の《イベント名入力》の処理で424エラーが出てしまいます。 以下のような事を試してみたのですが、まったくわかりませんでした。 どなたか解決策をご教示ください!! ・Excelの参照設定確認⇒動作PCとすべて一致 ・IEの互換性表示設定⇒ 実施すると424エラーが91エラーになった ・getElementByIdをforms(0)にしてみた⇒動かず ・getElementByIdをgetElementsByNameにしてみた⇒動かず(91エラー) ・%temp%で検索し、Excel8.0のディレクトリを削除⇒影響なし デバッグ時にひっかかっている箇所の前に同じような処理('イベントコード)は動作しているのが逆に謎です。 以下、ソース冒頭から該当箇所まで Sub MainFlow() Dim objIE As Object 'IE起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '管理画面に接続 objIE.navigate "http://www.xxxxxxxxx.com" 'ループ回数の算出 endrow = Cells(Rows.Count, 1).End(xlUp).Row 'ループ処理 For myCnt = 2 To endrow 'IEを待機 Call IEWait(objIE) 'イベントコード objIE.document.getElementById("s_event_cd").Value = Worksheets("data1").Cells(myCnt, 1).Value 'コピー用開催日 objIE.document.getElementById("s_event_kaisai_ymd_from").Value = Worksheets("data1").Cells(myCnt, 2).Value '検索ボタン押下 Call IEButtonClick(objIE, "検索") 'IEを待機 Call IEWait(objIE) '編集ボタン画像をクリック For n = 0 To objIE.document.images.Length - 1 'イメージ数ループする。 Set objIMG = objIE.document.images(n) 'n番目のイメージを代入 If InStr(objIMG.src, "button_mod.gif") > 0 Then '"言語の入れ替え") '合致した画像のボタンの場合 objIMG.Click Exit For End If Next 'IEを待機 Call IEWait(objIE) 'サブミット Call IEButtonClick(objIE, "このイベントのコピーを作成") 'ビジーウエイト Call IEWait(objIE) 'イベント名入力 objIE.document.getElementById("event_name").Value = Worksheets("data1").Cells(myCnt, 3).Value 以下省略

  • VBAでFC2に自動ログインしたい

    excel2010 VBAを使ってFC2のログインをしたいと思います。 色々と試してみましたが、ログインボタン押下を無視されているようです。 何か良い方法は、ありませんか。 'ログイン ie.Navigate "http://fc2.com/login.php?ref=blog" waitIE ie Sleep 1000 ie.document.getElementById("id").Value = Worksheets("ブログリスト").Range("C" & num).Value ie.document.getElementById("pass").Value = Worksheets("ブログリスト").Range("D" & num).Value 'ie.document.all.INPUT.Click 'クリックメソッドを実行 ie.document.forms(0).Submit 'ie.document.getElementsByTagName("image").Item(0).Click 'ie.document.getElementById("image").Click 'ie.documant.all.Item("image").Value.Click 'ie.Document.form_login.Submit waitIE ie Sleep 1000 上記のコメントアウトは実行してエラーになりました。 良い手立てがありましたら、ご教示ください。

  • エクセル VBA 値の取得

    <div id=result name=result class='resultleft'><div class='finalresult'> 結果 </div> </div> 上記のソースの”結果 ”という値を取り出したいのですが実現できません。 Set IE = CreateObject("InternetExplorer.Application") Cells(1, 1) = IE.Document.getElementById("result").Value や Cells(1, 1) = IE.Document.getElementsByName("result").Value は、駄目なのでしょうか。

  • VBAでヤフー地図を検索して表示

    インターネットエクスプローラーを開いて検索枠に検索語(ユーザーフォームのTextBox7)を入力後、 検索ボタンをクリックして画面が変わったら地図のタグをクリックして地図を表示するという作業 なのですがエラーが起きて困っています。 9月までは正常に動いていたのですが、10月に入ってからエラーが起きるようになりました。 エラーが起きる箇所ではgetelementbyidが使えないのではないかと思い、色々調べて試してみたのですが駄目でした。 どうか宜しくお願いします。 Sub Map_Search() Dim ie As New InternetExplorer  'IEオブジェクトの生成 ie.Navigate2 "http://yahoo.co.jp/"  'Yahooニューストップページ ie.Visible = True While (ie.Busy = True) Or (ie.ReadyState < READYSTATE_COMPLETE) '読み込み待ち DoEvents Wend With ie 'IE画面の大きさ調整 .Top = 0 .Left = 0 .Height = 1000 .Width = 1286 .Resizable = True End With ie.Document.getelementbyid("srchtxt").Value = TextBox7  '住所を入力  ←ここでエラーが起きる ie.Document.getelementbyid("srchbtn").Click  '検索ボタンをクリック  ←おそらくここでもエラーになる? While (ie.Busy = True) Or (ie.ReadyState < READYSTATE_COMPLETE) '読み込み待ち DoEvents Wend ie.Document.getelementbyid("map").Click  '地図タグをクリック  ←おそらくここでもエラーになる? End Sub

  • VBAでヤフー地図を検索して表示

    インターネットエクスプローラーを開いて検索枠に検索語(ユーザーフォームのTextBox7)を入力後、 検索ボタンをクリックして画面が変わったら地図のタグをクリックして地図を表示するという作業 なのですがエラーが起きて困っています。 9月までは正常に動いていたのですが、10月に入ってからエラーが起きるようになりました。 エラーが起きる箇所ではgetelementbyidが使えないのではないかと思い、色々調べて試してみたのですが駄目でした。 どうか宜しくお願いします。 Sub Map_Search() Dim ie As New InternetExplorer  'IEオブジェクトの生成 ie.Navigate2 "http://yahoo.co.jp/"  'Yahooニューストップページ ie.Visible = True While (ie.Busy = True) Or (ie.ReadyState < READYSTATE_COMPLETE) '読み込み待ち DoEvents Wend With ie 'IE画面の大きさ調整 .Top = 0 .Left = 0 .Height = 1000 .Width = 1286 .Resizable = True End With ie.Document.getelementbyid("srchtxt").Value = TextBox7  '住所を入力  ←ここでエラーが起きる ie.Document.getelementbyid("srchbtn").Click  '検索ボタンをクリック  ←おそらくここでもエラーになる? While (ie.Busy = True) Or (ie.ReadyState < READYSTATE_COMPLETE) '読み込み待ち DoEvents Wend ie.Document.getelementbyid("map").Click  '地図タグをクリック  ←おそらくここでもエラーになる? End Sub

  • VBAでサイトにログインする際について

    とあるサイト(https://www.rakuten-sec.co.jp/ITS/V_ACT_Login.html)にログインしたく、VBAにてDocumentオブジェクトで、以下のように書きましたが、クリックのところでエラーになってしまいます。 ボタン名が submit%template なのでそのまま入力してもうまくいきませんでした。[]で閉じてもうまくいかず悩んでいます。 どなたか教えていただけませんか。 strURL = "https://www.rakuten-sec.co.jp/ITS/V_ACT_Login.html" strLogin = "loginid" strPassword = "password" objIE.Navigate strURL With objIE.Document .all.loginid.Value = strLogin .all.passwd.Value = strPassword .all.submit%template.Click

  • エクセルでのVBA

    エクセルでVBAを使ってIEで指定のURLを開いて、VBAで指定したWEBフォームにエクセルで指定したセルの値を入力したいのですが、下記のコードを入れるとエラーが出てしまいます。   A1:1-1 or 1-2 or 1-3 B1:月曜日 C1:火曜日 D1:水曜日 上のA1~D1まで入力した上でコマンドボタンをクリックすると、自動的に行うようにしたいです。 Private Sub CommandButton1_Click() Dim objie As Object Set objie = CreateObject("InternetExplorer.application") objie.Visible = True objie.Navigate "http://●●●●/form.html" Dim kubun As String kubun = range("A1") Select Case kubun Case "1-1" call ma1_1 Case "1-2" call ma1_2 Case "1-3" call ma1_3 End select Set objie = Nothing End sub Sub ma1_1() objie.Document.all.form1_1.Value = Range("B1") End Sub Sub ma1_2() objie.Document.all.form1_1.Value = Range("B1") objie.Document.all.form1_2.Value = Range("C1") End Sub Sub ma1_3() objie.Document.all.form1_1.Value = Range("B1") objie.Document.all.form1_2.Value = Range("C1") objie.Document.all.form1_3.Value = Range("D1") End Sub これで実行を押すと、objie 変数が定義されていません。と出てしまいます。このobjieを有効にするにはどうしたよいのでしょうか? わかる方いましたらご教授願います。 よろしくお願いします。

  • ログインIDの変数は出来ませんか?

    var IE = WScript.CreateObject("InternetExplorer.Application"); IE.Visible = true; IE.Width = 1000; IE.Height = 1000; IE.Navigate("https://www.***.co.jp/" method="post" name="AutoLogOn"); while(IE.busy) ; while(IE.Document.readyState != "complete") ; IE.Document.all('loginForm').username.value = "1234"; IE.Document.all('loginForm').password.value = "5555"; IE.Document.all('loginForm').submit(); while(IE.busy) ; while(IE.Document.readyState != "complete") ; 上記の様にログインいつもしているのですが、このFILEをいろいろな人が使うので、デスクトップにusernameとpasswordだけを記入したテキストを毎回作り、 IE.Document.all('loginForm').username.value = 変数1; IE.Document.all('loginForm').password.value = 変数2; この変数をデスクトップのテキストのなかの文字列を参照することは出来ませんか?

  • JavaScript初心者です

    今、あるページに自動でログインした後で、特定のページまで移動する、という仕掛けを 作っています。ソースはこんなんです。 ------ここから----- main(); function main() { var ie = WScript.CreateObject("InternetExplorer.Application"); ie.visible = true; ie.navigate("URL"); while( (ie.Busy) || (ie.readystate != 4) ) { WScript.Sleep(100); } // ユーザID ie.document.getElementById("email").value = "メールアドレス"; // パスワード ie.document.getElementsByName("password").item(0).value = "パスワード"; ie.document.getElementsByName("menu_btn").value = "ログインページ"; ie.document.getElementsByTagName("form").item(0).submit(); while( (ie.Busy) || (ie.readystate != 4) ) { WScript.Sleep(100); } } var location; location.href = "移動先"; -----ここまで----- ログインは無事にできるのですが、そこのリンクを踏んで特定のページまで行くように location.hrefで指定してるのに飛ぶことができません。何がおかしいのでしょうか?

専門家に質問してみよう