VBAを利用したブログへの自動ログイン
未読分:2件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#2 2014年10月28日(火)06時05分 From: 管理人 | 返事 削除 変更 |
提示いただいている情報で試しましたが、特に問題なくログインボタンまで押されました。 試しに以下の処理をしてみてください。 #If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) #End If '---------------------------------------------------------------- '@指定URLを表示するサブルーチン「ieView」 Sub ieView(objIE As InternetExplorer, _ urlName As String, _ Optional viewFlg As Boolean = True) 'IE(InternetExplorer)のオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.Application") 'IE(InternetExplorer)を表示・非表示 objIE.Visible = viewFlg '指定したURLのページを表示する objIE.Navigate urlName 'IEが完全表示されるまで待機 Call ieCheck(objIE) End Sub '---------------------------------------------------------------- 'AWebページ完全読込待機処理サブルーチン「ieCheck」 Sub ieCheck(objIE As InternetExplorer) Dim timeOut As Date timeOut = Now + TimeSerial(0, 0, 10) Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Sleep 100 If Now > timeOut Then objIE.Refresh timeOut = Now + TimeSerial(0, 0, 10) End If Loop timeOut = Now + TimeSerial(0, 0, 10) Do Until objIE.document.ReadyState = "complete" DoEvents Sleep 100 If Now > timeOut Then objIE.Refresh timeOut = Now + TimeSerial(0, 0, 10) End If Loop End Sub '---------------------------------------------------------------- 'Bタグをクリックするサブルーチン「tagClick」 Sub tagClick(objIE As InternetExplorer, _ tagName As String, _ tagStr As String) 'タグをクリック For Each objTag In objIE.document.getElementsByTagName(tagName) If InStr(objTag.outerHTML, tagStr) > 0 Then objTag.Click Call ieCheck(objIE) Exit For End If Next End Sub '---------------------------------------------------------------- 'Cフォームのテキストボックスへ入力するサブルーチン「tagClick」 Sub formText(objIE As InternetExplorer, _ nameValue As String, _ tagValue As String) 'テキストボックス・パスワードボックスにデータを入力 For Each objTag In objIE.document.getElementsByTagName("input") If objTag.Name = nameValue Then objTag.Value = tagValue Exit For End If Next 'テキストエリアにデータを入力 For Each objTag In objIE.document.getElementsByTagName("textarea") If objTag.Name = nameValue Then objTag.Value = tagValue Exit For End If Next End Sub '---------------------------------------------------------------- '▼seesaaブログへ自動ログインプログラム Sub sample() Dim objIE As InternetExplorer 'Seesaaブログのサインイン画面をIEで起動 Call ieView(objIE, "https://ssl.seesaa.jp/auth") 'テキストボックスにログインIDを入力 call formText(objIE, "email", Cells(1, 1).Value) 'テキストボックスにログインパスワードを入力 call formText(objIE, "password", Cells(1, 2).Value) '検索ボタンをクリック call tagClick(objIE, "input", "サインイン") End Sub |
Message#1 2014年10月28日(火)05時52分 From: みるみる | 返事 削除 変更 |
ブログへのログインVBAを作ったのですが、サインイン(ログイン)のクリック指令がうまく行きません。 どなたか間違い箇所をご指摘いただければ幸いです。 自作VBA Sub useTextbox() Dim ie As InternetExplorer Dim txtInput As HTMLInputElement Set datasheet = ActiveSheet Dim form As HTMLFormElement Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.navigate "https://ssl.seesaa.jp/auth?return_to=https%3A%2F%2Fssl.seesaa.jp%2F..." Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE DoEvents Loop WaitFor (3) Set txtInput = ie.document.getElementById("email") txtInput.Value = datasheet.Cells(1, 1).Value Set txtInput = ie.document.getElementById("password") txtInput.Value = datasheet.Cells(1, 2).Value WaitFor (3) Set form = ie.document.forms("authpost") form.submit Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE DoEvents Loop WaitFor (3) 'ログアウト ie.navigate "http://blog.seesaa.jp/pages/logout" Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE DoEvents Loop End Sub '指定した秒だけ停止する関数 Function WaitFor(ByVal second As Integer) Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Function ・・・・・・・・・・・・・・・・ 参照html < <form action="auth" method="post" name="authpost"><input value="FI6S4XSRkJVW2s_nAazRt2XzRy0" name="aXt" id="aXt" type="hidden"> <div id="logintxt">Seesaa アカウントサインイン</div> <div id="emailtxt">メールアドレス</div> <div><input name="email" id="email" size="15" type="text" value="" tabindex="1" /></div> <div id="passwordtxt">パスワード</div> <div><input name="password" id="password" size="15" type="password" value="" tabindex="1" /></div> <div id="mem"><input name="remember_me" id="remember_me" type="checkbox" value="t" tabindex="3" /><label for="remember_me">この情報を保持する</label></div> <div id="signin"><input value="サインイン" type="submit" tabindex="4" /></div> <input name="return_to" value="https://・・・・・" /> </form> |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降