エクセルVBAでのHPへのログイン方法と問題
- エクセルVBAを使用して特定のHPにログインする方法がわかりません。
- 他のHPと同じ方法で試しても、目標のHPのフォームに文字を入力できません。
- 目標のHPにログインするための正しいVBAコードを教えてください。
- ベストアンサー
あるHPにエクセルのVBAから入力したいのですが
はじめまして。VBAの初心者です。 現在、エクセルVBAを用いてIEにログインするコードを作っています。 で、他のページはうまくいったのですが、 https://www.wnp.waseda.jp/portal/portal.php このホームページだけは他のページと同じやり方でやっても、フォームに文字を入力することができません。 ちなみに以下のコードを記述しましたがうまくいきませんでした。 'IEの起動 Dim objIE As Object '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "https://www.wnp.waseda.jp/portal/portal.php" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 DoEvents Wend objIE.Document.Form1("loginid").Value ="私のID" '←ここでエラーがでます。 (1)なぜ他のHPと同じようにはいかないかという点と、できれば、(2)うまくいくコード、を教えていただければ嬉しいです。 よろしくお願いします。
- masashinnn
- お礼率14% (1/7)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>エクセルVBAを用いてIEにログインするコードを作っています ということで、「コツ」と申しますか、2点ほど、基本的な「ワザ」みたいなことがあります。 1)アクセス する WEBページ の htmlソース を見る。 2)「objIE.Document」を ウォッチ式 に追加し、ステップ イン デバッグ しながら、配下の プロパティ などの値の変化を見る。 >フォームに文字を入力することができません。 お示しの URL の ソース をご覧いただくと一目瞭然ですが、当該 ページ には <FRAMESET ~~><FRAME ~~><FRAME ~~></FRAMESET> というような html が書かれています。 ここで、お尋ねの ログインページ の本当の アドレス は src="./portalLogin.php?ERRFLAG=1&LoginID=&HID_P14=JA" の部分に書かれていますので、 >'処理したいページを表示します。 の段階で、 objIE.Navigate "https://www.wnp.waseda.jp/portal/portal.php" ではなくて、 objIE.Navigate "https://www.wnp.waseda.jp/portal/portalLogin.php?ERRFLAG=1&LoginID=&HID_P14=JA" としてみてください。 次に、この ページ の htmlソース を見てみると「"ログインID"」や「"パスワード"」の周辺に「NAME="loginid"」や「NAME="passwd"」というような ソース が見て取れます。 従って、 '処理したいページを表示します。 objIE.Navigate "https://www.wnp.waseda.jp/portal/portalLogin.php?ERRFLAG=1&LoginID=&HID_P14=JA" 'ページの表示完了を待ちます。 While ~~ Wend objIE.Document.getelementsbyname("loginid")(0).Value = "私のID" objIE.Document.getelementsbyname("passwd")(0).Value = "私のpasswd" objIE.Document.getelementsbyname("frmLogin")(0).submit とした後に、再度 '処理したいページを表示します。 objIE.Navigate "https://www.wnp.waseda.jp/portal/portal.php" としてみられたらいかがでしょうか? なお、私は「wnp.waseda.jp」の ID 等を有しておりませんので、これから先のことにつきましては、冒頭の(1)(2)をご参考になさってみてください。
その他の回答 (1)
- todo36
- ベストアンサー率58% (728/1234)
(1)フォーム上にないから。 (2)document.getElementsByName("loginid")(0)
補足
ご回答ありがとうございます。 objIE.Document.getElementsByName("loginid")(0).Value = 私のID ということでしょうか? これも試してみたのですが、うまくいきませんでした。 『実行時エラー91 オブジェクト変数またはwithブロック変数が設定されていません。』 というエラーメッセージが出てしまいます。
関連するQ&A
- エクセルのVBAで最終行までループする方法
エクセルのVBAで最終行までループする方法を教えてください。 下記がコードになります。 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate Range("A1").Value While objIE.ReadyState <> 4 Or objIE.Busy = True DoEvents Wend Range("B1").value = objIE.Document.all("zoom1").href
- ベストアンサー
- オフィス系ソフト
- エクセル VBA で IE操作
エクセルVBAにて IEを操作し リンクをクリックするには どのような記述になりますでしょうか? たとえば http://okwave.jp/mypage へアクセスし画面右上 カテゴリ をクリック 次に Excel(エクセル) をクリック という具合に 画面に表示されている文字を順番にクリックしたいです。 マクロを見つけてきましたが クリックというのはどう記述していいやらさっぱりです。 Sub testIE() Dim objIE As InternetExplorer 'IEオブジェクトを準備 Set objIE = CreateObject("Internetexplorer.Application") '新しいIEオブジェクトを作成してセット objIE.Visible = True 'IEを表示 objIE.navigate "http://okwave.jp/mypage" 'IEでURLを開く Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち DoEvents Loop
- ベストアンサー
- Excel(エクセル)
- 無限ループ VBA IE操作
VBAです。 とあるサイトで 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 が無限ループに陥ります。 中断して Exit Sub を入れてみましたが、抜けれません。 ページは既に表示済みです。 なぜ無限ループが抜けられないのか、 なぜページが表示されているのにこのコードが繰り返されるのか 何かわかる方よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- DocumentCompleteイベントプロシジャに制御が渡らない
VB6(VBA)でIEを操作し、表示ページのソースの読込みの確認にDocumentCompleteイベントを使用することを考えています。それで下記のテストプログラムを作成しますたが、DocumentCompleteイベントプロシジャに制御が渡りません。 その原因をご教示して頂きたくお願いします。 Dim WithEvents objIE As InternetExplorer --------------------------------------------------------------- Private Sub CommandButton1_Click() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" While objIE.readyState <> 4 While objIE.Busy = True DoEvents Wend Wend objIE.Navigate "http://www.goo.ne.jp/" While objIE.readyState <> 4 While objIE.Busy = True DoEvents Wend Wend End Sub ------------------------------------------------------------- Private Sub objIE_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox "ソースの読込み完了" End Sub
- 締切済み
- Visual Basic
- VBAによるIE操作について
VBAによるIE操作について WEBブラウザの表示が完了しているかを確認する方法で以下を利用しています。 While objIE.Busy = True Or objIE.ReadyState <> 4: DoEvents: Wend Set objDoc = objIE.Document Do Until objDoc.ReadyState = "complete": DoEvents: Loop これで完了するまで処理を待つのですが、たまにブラウザが読み込み状態で固まってしまうことがあります。 F5で更新すると再度読み込みを行い、処理が正常に戻るのですが、固まってしまった場合のプログラムでの対処法はないでしょうか? 10秒間ループし続けたらsendkeysでF5を押下するなど色々考えたんですが、うまく表現できません>< どなたか分かる方ご教授お願いします!
- ベストアンサー
- Visual Basic
- vbaでIEの操作
こんばんは。やりたいことができないので教えてください。 vbaで指定のurlを開きたいです。 エクセル2003とIE8です。 Sub test001() Dim ObjIE As Object Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True ObjIE.navigate "http://jp.msn.com/" Do While ObjIE.Busy = True '表示させるまで待つ DoEvents Loop End Sub これでIEを立ち上げてURLを開けるのですが これでは新しいウインドウで開いてしまいます。 現在IEを立ち上げていて、上記のコードを実行すると 新たなタブで開きたいですが解決策はありますか? ObjIE.Visible = True が原因かと思い、これを抜かしてみましたが そうすると何も起こりません。 VBAで既に開いているIEの新しいタブでURLを開く方法をご教授ください!よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAで URLの内容 が取得できない
EXCEL VBA で VBAサンプルを参考にして、下記により、URLの内容を得ようとしていますが、できません。 どうも、URL画面の中に インプット用の記述があると、できなくなるのでは、と推測していますが、できるケースもあるようです。解決方法があるようでしたら、教えていただけますでしょうか? (Win7 64B EXCEL2010 IE11です。)' Sub URL取得TEST() On Error GoTo Er1 Dim StrUrl As String StrUrl = InputBox("URLを指定", "URL入力", "http://www3.nhk.or.jp/nhkworld/") ' これは 読み込めます StrUrl = InputBox("URLを指定", "URL入力", "http://uwl.weblio.jp/") ' これが読み込めません Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.FullScreen = False objIE.Top = 200 objIE.Left = 100 objIE.Width = 800 objIE.Height = 600 objIE.navigate StrUrl While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True DoEvents Wend DoEvents Workbooks.Add objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 Sheets.Add ActiveSheet.name = "Format テキスト" Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト" objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 Sheets.Add ActiveSheet.name = "FormatHTML" Range("A1").Select ActiveSheet.PasteSpecial Format:="HTML" '別のURLでテキストOKでこれはだめというケースあり ' objIE.Quit Set objIE = Nothing Exit Sub ' Er1: objIE.Quit Set objIE = Nothing End Sub
- ベストアンサー
- Visual Basic
- VBの記述方法はVBAと同じなのですか?
これからVisual Studio 2012を導入してVBA(Excel)でやっていたことをVSでやりたいのですが 基本的にVSのVisual Basicの記述方法はVBAと同じなのでしょうか? 例えばネットのあるサイトをログインして遷移後のhtmlを取得するには、VBAだと以下のように書きます。 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://xxxxxx/login.aspx" objIE.document.All.txt_userid.Value = xxx 'ユーザー名 objIE.document.All.txt_pass.Value = xxx 'パスワード objIE.document.All.btn_login.Click '送信結果のページ読み込みが終わるまでループ While (objIE.Busy = True Or objIE.ReadyState <> 4) DoEvents Wend '表示したページの<BODY>部のHTMLを取得 Dim htmlBody As String htmlBody = objIE.Document.Body.InnerHtml C#で記述しようか、慣れているVBAと似ているVBで書こうか悩んでいます。 どうぞよろしくお願い致します。
- ベストアンサー
- Visual Basic
- VBでIEよる新ページ表示後にエラーになる
VBでIEを操作していますが、ページ表示直後にそのページのソースを処理するステートメントでエラーとなります。デバッグモードのステップインで実行するとエラーにはなりません。尤もページ表示後は、下記処理で表示完了を待つようにしています。 While objIE.ReadyState <> 4 While objIE.Busy = True DoEvents Wend Wend 現在、暫定的に表示完了を待つ処理の後に数秒のインターバルを置くようにしています。何か良い方法はないでしょうか?
- ベストアンサー
- Visual Basic
- VBA IE操作 メルカリの検索窓に入力できません
お世話になります。 Win7/エクセル2010/IE11 使用です エクセルVBAよりIEでメルカリ(https://www.mercari.com/jp/)の 検索窓にテキスト文字を入力させたいのですが、入力できません。 Sub GoogleSearch() Dim objIE As Object Dim objInpTxt1 As HTMLInputElement Dim objInpTxt2 As HTMLInputElement Dim URL1 As String Dim myKey As Variant myKey = "あ" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "https://www.mercari.com/jp/" Call IEWait(objIE) Set objInpTxt1 = objIE.document.getElementsByName("keyword")(0) objInpTxt1.Value = myKey ’テキストが入力されません 'objIE.document.forms(0).submit ’検索ボタンを押すコードが知りたいです objIE.Quit Set objIE = Nothing End Sub 'IEを待機する関数 Function IEWait(ByRef objIE As Object) Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop End Function -------- メルカリの検索窓のInputタグのtypeがtextではなくsearchとなっていますが 何か関係がありますでしょうか? あと、できましたら 上記のコードでは、コメントアウトしている 検索ボタンをクリックするコードも教えてもらえると幸いです <i>タグの意味がよくわかりません。 <i class="icon-search"></i> お手数をおかけしますが よろしくお願いします
- ベストアンサー
- Excel(エクセル)
お礼
理解できました! そしてできました! ありがとうございました!