• 締切済み

hiddenとなっているのは、VBAではキャッチで

VBAのie操作で ソースが <input type="hidden" name="name" value="name"> のようにhiddenとなっているのは、VBAではキャッチできないのでしょうか? For Each myObj In objIE.document.all.tags("input") If myObj.Name = "name" Then End If Next が出来ないのは、hiddenだからでしょうか?

みんなの回答

  • mike321
  • ベストアンサー率44% (4/9)
回答No.1

hiddenでも取得できます。 試しに下記のサイトでhiddenの項目を取得できるかどうかやってみました。 http://pointshop.jp/index.aspx Option Explicit Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '============================================================= ' スクレイピング用共通モジュール '============================================================= Sub ieOpen(objIE As InternetExplorer, strURL As String) '新しいIEオブジェクトを作成してセット Set objIE = CreateObject("Internetexplorer.Application") 'IEを表示 objIE.Visible = True 'IEでURLを開く objIE.navigate strURL '読み込み待ち Call ieReady(objIE) End Sub Sub ieReady(objIE As InternetExplorer) '読み込み待ち Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE Sleep 10 DoEvents Loop End Sub '============================================================= ' ここから実行 '============================================================= Sub getInputTagName() Dim txtURL As String Dim i As Long Dim myObj As Object Dim objIE As InternetExplorer 'IEオブジェクト 'サイトのURL txtURL = "http://pointshop.jp/index.aspx" 'IEでページを開く Call ieOpen(objIE, txtURL) i = 1 For Each myObj In objIE.document.all.tags("input") Cells(i, 1) = myObj.Name If myObj.Name = "__VIEWSTATEGENERATOR" Then Cells(i, 2) = myObj.Value End If i = i + 1 Next End Sub

関連するQ&A

  • objIE.Navigate2 "http://.

    win8.1 エクセル2010です。 1ページ目でyahooのソースをチェックし、 2ページ目でグーグルのソースをチェックするにはどうすればいいでしょうか? **************************************************************** Option Explicit Dim objIE As InternetExplorer Sub test() Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .navigate "http://www.htmllint.net/html-lint/htmllint.html" End With Call wait For Each myObj In objIE.document.all.tags("input") If myObj.Name = "URL" Then myObj.Value = "http://www.yahoo.co.jp/" Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.alt = "CHECK" Then myObj.Click Exit For End If Next Call wait '表示が終わってないのに次のコードに進んでるっぽい objIE.Navigate2 "http://www.htmllint.net/html-lint/htmllint.html", 2048 For Each myObj In objIE.document.all.tags("input") If myObj.Name = "URL" Then myObj.Value = "https://www.google.co.jp/" Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.alt = "CHECK" Then myObj.Click Exit For End If Next End Sub Sub wait() Do While objIE.Busy = True DoEvents Loop Do While objIE.readyState <> 4 DoEvents Loop End Sub **************************************************************** というコードを作ったのですが、 1ページ目のタブで、ヤフーのコードをチェックし、 2ページ目のタブで http://www.htmllint.net/html-lint/htmllint.html は表示できたのですが、 2ページ目のタブのボックスに myObj.Value = "https://www.google.co.jp/" を入れることができません。 しかし 上記のコードを実行してもエラーにはなりません。 2回目の For Each myObj In objIE.document.all.tags("input")は 何をループしているのかよくわかりません。 objIE.Navigate2 "http://www.htmllint.net/html-lint/htmllint.html", 2048 で開いた二つ目のタブで For Each myObj In objIE.document.all.tags("input") If myObj.Name = "URL" Then myObj.Value = "https://www.google.co.jp/" Exit For End If Next をやる方法を教えてください。

  • vbaでnanacoにログイン(ie操作)

    私は「緑のパスワードがなくnanacoをお持ちの方」です。 カード記載の番号にはvbaで値を入れることはできるのですが、 nanaco番号に値を入れることとログインボタンを押すことができません。 ********************************************** Sub nanaco() Dim objIE As InternetExplorer Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "https://www.nanaco-net.jp/pc/emServlet" Do While objIE.Busy = True DoEvents Loop Do While objIE.document.readyState <> "complete" DoEvents Loop objIE.document.all("XCID").Value = "12345" objIE.document.all("SECURITY_CD").Value = "Password" For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then myObj.Click Exit For End If End If Next Set objIE = Nothing End Sub ********************************************** これだとまずall("XCID").Value でエラーになります。 ソースでは、 <input name="XCID" tabIndex="1" class="txtBoxLogin" accessKey="1" type="text" maxLength="16" value=""/> となっておりますが、同じコードが二つあるからエラーになるのでしょうか? all("SECURITY_CD").Value は問題なくできます。 ソースにも、SECURITY_CDは一つしかないです。 次にログインボタンも二つあるのですが、 For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then myObj.Click Exit For End If End If Next このコードを実行すると、多分上の方のログインボタンが押されてるようです。 なので、 Dim 二つ目 As Boolean For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then If 二つ目 = True Then myObj.Click Exit For End If 二つ目 = True End If End If Next に変更してみたのですが、 どうやら If myObj.alt = "ログイン" Then になるのは、1回しかないようです。 うーん、うまくできません。 ご教授よろしくお願いします。

  • 検索ボタン押下時に、検索ボックスに入れた値が消える

    ie操作ですが、 検索ボックスに文字を入れて、検索ボタンを押すことは出来たのですが 検索ボタン押下時に、検索ボックスに入れた値が消えてしまい、結局何も検索ボックスに入れてない状態で検索されてしまいます。 検索ボックスに値を入れても文字の色が灰色です。 手作業で検索ボックスに文字を入れると黒で表示されます。 コードはこちらです。 Sub ヒトサラ() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://hitosara.com/" Do While objIE.Busy = True DoEvents Loop For Each myObj In objIE.Document.all.tags("input") If myObj.Name = "keyword" Then myObj.Value = "検索文字" Exit For End If Next For Each myObj In objIE.Document.all.tags("input") If myObj.alt = "検索" Then myObj.Click Exit For End If Next End Sub myObj.Value = "検索文字" これが間違ってる気がするのですが どのように修正すればよいでしょうか?

  • objIE.Document.all.tags("

    Sub test1() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://oshiete.goo.ne.jp/" objIE.Visible = True Call IE_wait(objIE) objIE.Document.forms("center_searchform").elements("MT").Value = "教えて" For Each myObj In objIE.Document.all.tags("input") If myObj.alt = "検索する" Then objIE.Document.all.tags("input").alt("検索する").Click ‘ココでエラー End If Next Set objIE = Nothing End Sub これを実行するとクリックできないのですがなぜでしょうか? オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) が表示されます。 他の方法で解決する事は出来ますが、 If myObj.alt = "検索する" Then が出来てるからこのままうまく行きそうな気がするのですが? 理由を教えてください。ご回答よろしくお願いします。

  • 二つのタブを開き、二つ目のタブに対して、操作し

    vbaのie操作で 一つ目はタブはグーグルメール 二つ目のタブはドコモメールを開きたいのですが、 ドコモメールはPWをVBAで入れないと進めないので入れたいのですが Sub test() Dim myObj As Object Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .Navigate "https://mail.google.com/mail/u/0/?pli=1#inbox" ’グーグル End With objIE.Navigate2 "https://mail.smt.docomo.ne.jp/mail/#fid=10000000&page=1", 2048 ’ドコモ For Each myObj In objIE.document.all.tags("input") If myObj.ID = "persistent" Then myObj.Value = "PW" Exit For End If Next Set objIE = Nothing End Sub だと、 For Each myObj In objIE.document.all.tags("input") は、グーグルメールを参照しています。 LocationURLを見てみたら、 "https://mail.google.com/mail/u/0/#inbox" になっていました。 このように、二つのタブを開き、二つ目のタブに対して、操作したい場合 どうすればいいでしょうか?

  • vbaでdcmxにログインしたいのですが、

    https://cfg.smt.docomo.ne.jp/auth/cgi/anidlogin?rl=https%3A%2F%2Fi.mydocomo.com%2Foid%2Flg%2Flogin%3Fmode%3Dlogin%26return_to%3Dhttps%253A%252F%252Fwww1.dcmx.jp%252Fsdys%252Fsp%252Fopenid%252Fopenid_entry_input.do%26user_check%3D54cad3f373419a99d7830f9af7d22273c953e635c3a362c39338ab841078b1134f2dcd5104b0c9233fd98caf2ece0ca70000000000000000&si=0001&authif=1 のページなのですが ******************************************************* Dim myObj As Object Dim objIE As InternetExplorer Sub DCMX() Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.navigate "https://cfg.smt.docomo.ne.jp/auth/cgi/anidlogin?rl=https%3A%2F%2Fi.mydocomo.com%2Foid%2Flg%2Flogin%3Fmode%3Dlogin%26return_to%3Dhttps%253A%252F%252Fwww1.dcmx.jp%252Fsdys%252Fsp%252Fopenid%252Fopenid_entry_input.do%26user_check%3D77016eccfd48449791dc76443259e46c30e0f39f25bc31902f48550e56b1176f73ec037e4b531368a8587aa1b5208c7d0000000000000000&si=0001&authif=1" Call IE_wait For Each myObj In objIE.document.all.tags("input") If myObj.Name = "authid" Then myObj.Value = "あああ@yahoo.co.jp" Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.Name = "authpass" Then myObj.Value = "あああ" Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.Name = "subForm" Then myObj.Click Exit For End If Next End Sub Sub IE_wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.readyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub ******************************************************* でログインボタンを押下でき、VBAではエラーにはならないのですが、 次のページで ******************************************************* エラー 大変申し訳ございません。 お探しのページまたはファイルが見つかりませんでした。(IN-E-1001) ******************************************************* となってしまいます。 DCMXではなく、 objIE.navigate "https://id.smt.docomo.ne.jp/cgi7/id/menu" のdアカウントなら問題なく次のページも表示されます。 なぜDCMXはエラーになってしまうのでしょうか?

  • VBAでURLを指定する方法

    VBAを使用して、エクセルに記載しているテキストで開くURLを変えるプログラムを作成しようと思っております。 例えばA1に『yahoo』と入力されていれば、『http://www.yahoo.co.jp/』を開き、 『google』と入力されていれば、『http://www.google.com』を開くようにしたいです。 現在、下記のプログラムを使用していますので、 下記を流用できるようにして頂けると幸いです。 Sub test() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "『特定URL』" Do While objIE.ReadyState <> 4 Do While objIE.Busy = True Loop Loop For Each Obj In objIE.Document.getelementsbytagname("input") If Obj.Name = "mail" Then objIE.Document.getelementsbyname("mail")(0).Value = Range("C1").Value Else If Obj.Name = "password" Then objIE.Document.getelementsbyname("password")(0).Value = Range("D1").Value Else objIE.Document.Links(1).Click End If End If Next End Sub 宜しくお願いいたします。

  • 食べログに価格ドットコムのIDでログインしたい

    食べログにvbaを使ってログインしたいのですが、 どうしてもログインボタンを押せません。 クリックできない状態です。 Enabledプロパティと同じような状態です。 Dim objIE As InternetExplorer Sub Sample1() Dim SiteName As String Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "https://ssl.tabelog.com/account/kakakuid_entry/" With objIE.document .all("mail_address").Value = "test" .all("password").Value = "test" End With For Each myObj In objIE.document.all.tags("input") If myObj.alt = "ログイン" Then myObj.Click Exit For End If Next Set objIE = Nothing End Sub こうしても、なぜかログインボタンが選択状態になりません。 手動でIDとPWを入力すると、ボタンが青くなり、押せるようになりますが VBAで情報を入力すると、選択不可状態のままです。 これが原因で、vbaでログインボタンがクリックできないのでしょうか?

  • 実行時エラー92 forループが初期化されていませ

    エクセルVBAでFor Eachを使ってるのですが、 Nextの部分で 実行時エラー92 forループが初期化されていません。 というエラーになります。 On Error GoTo ERR1 For Each myObj In objIE.Document.all.tags("ul") If myObj.className = "" Then '○○の場合 Exit Sub ERR1: If Err.Number = 424 Then On Error GoTo 0 'エラーを解除 '▲▲の場合 If strカテゴリ Like "" Then Exit Sub End If End If End If Next というコードなのですが、どこかおかしいですか?

  • フレームを使ってるサイトはタグの取得はできない?

    フレームを使ってるサイトは、タグの取得はできないのでしょうか? vbaでieを操作をしていて、サイトにログイン後、 imgタグの中にあるaltの値を取得したいのですが、 For Each myObj In objIE.document.all.tags("img") Debug.Print myObj.alt Next これがスルーされてしまいます。 imgタグがいくつもあるのにスルーされてしまうし、imgタグだけでなくtdタグなどもすべてスルーされます。 その原因はサイトにフレームが使われてるからなのでしょうか? なぜか For Each myObj In objIE.document.all.tags("frame") Debug.Print myObj.Name Next なら値が取得できるんです。 For Each myObj In objIE.document.all.tags("form") Debug.Print myObj.Name Next はダメでした。 いつもなら、ソースにformタグがあれば、これで取得できるのですが・・・

専門家に質問してみよう