
【やりたいこと】
VBAを使用してサイトにログインし、ログイン後のHTMLドキュメントを取得したい。
【条件】
・エクセル以外のソフトは使用せず、VBAのみを使用する(VBA内でjavascriptなどの記述はOK)
・IEなどブラウザも仕様しない
【教えてほしいこと】
上記やりたいことを上記条件でどのように記述するかをしりたいです。
※IEを操作する方法は知っています。
【試したコード】
自分が試したのは下記コードです。
myURLのところに「ログイン画面のURL」
myBodyのところに「member_username=ログイン名&password=パスワード」
をいれています。
member_usernameはログイン名を入れる要素のname名称
passwordはパスワードを入れる要素のname名称
です。
Sub Sample()
Dim document As IHTMLDocument7
Set document = myPost("POST", ログイン画面のURL, False, "member_username=ログイン名&password=パスワード")
'→docuemtでログイン後のページのhtmlドキュメントを取得している想定
End Sub
Function myPost(myMethod As String, myURL As String, mySync As Boolean, myBody) As IHTMLDocument7
Dim httpReq As Object
Set httpReq = CreateObject("MSXML2.XMLHTTP")
With httpReq
.Open myMethod, myURL, mySync
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send myBody
End With
Do While httpReq.readyState < 4
Sleep 10
DoEvents
Loop
With CreateObject("ADODB.Stream")
.Open
.Position = 0
.Type = 1 'adTypeBinary
.write httpReq.responseBody
.Position = 0
.Type = 2 'adTypeText
.Charset = "UTF-8"
Dim ReturnDom As IHTMLDocument7
Set ReturnDom = New HTMLDocument
ReturnDom.write .ReadText
.Close
End With
Set PostDom2 = ReturnDom
Set httpReq = Nothing
Set ReturnDom = Nothing
End Function
【参考にしたサイト】
www.tohoho-web.com/ex/http.htm#request
http://outofmem.tumblr.com/post/63052619242/vbae …でhttp通信
http://piyopiyocs.blog115.fc2.com/blog-entry-433 …
【動作環境】
OS 名:Microsoft Windows 10 Pro
OS バージョン:10.0.16299 N/A ビルド 16299
OS 製造元:Microsoft Corporation
プロセッサ:Intel64 Family 6 Model 42 Stepping 7 GenuineIntel ~2400 Mhz
BIOS バージョン:TOSHIBA Version 2.20 , 2012/06/22
物理メモリの合計:3,988 MB
Excel バージョン:14.0.7192.5000(32ビット) Microsoft Office Standard 2010の一部
以上、よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
以下のようなHTMLファイルでログインできますか?
<form action="https://login.mail.goo.ne.jp/id/authn/Login">
<input name="uname" value="***">
<input name="pass" value="****">
<input type="submit">
</form>
ありがとうございます!
いただいた例では私のユーザー名とパスワードでログイン後のドキュメント取得ができました!
しかし、あるサイトではこのようにaction=""となってるものもあります。
この場合の対応方法はおわかりでしょうか?
<form name="frm" onsubmit="disableSubmit(this);submit2(this)" action="" enctype="application/x-www-form-urlencoded" method="post">
No.4
- 回答日時:
この辺りの書籍をご覧になると、そんな単純な物ではない事が分かると思います。
(言語はVBAでなくて、Javaですが)
No.2
- 回答日時:
> Set document = myPost("POST", ログイン画面のURL, False, "member_username=ログイン名&password=パスワード")
「ログイン画面のURL」 ではなく、
<form action=
のURLを指定する
ありがとうございます。
試してみました。
もともと
myURL="https://****.jp "
だったのを<form action=・・・・の
myURL="https://****.jp/login.pl "
に変更したところ、
帰ってきたdocument (outerHTML)は
<BODY>データがありません</BODY>
でした。
ログインされた後の画面にはなりませんでした。
同じことですが、念のため、
https://****.jp/login.pl
をブラウザの検索窓にいれて表示したところ、画面には「データがありません」と表示されるのみでした。
No.1
- 回答日時:
ご回答ありがとうございます。
いえ、機体したものがきません。
.statusはページの状態のようです。
.responsebodyがHTMLドキュメントのはずですが、httpReq.Open strMethod, strURL, bAsyncで指定しているstrURLの内容と同じです。
つまりログイン後のページではなく、ログイン前のページがかえってきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ログインフラグがわかりません。
-
えきねっとのログイン画面はどこ?
-
VBAでHTTPログイン
-
Accessの画面更新を一時的に停...
-
VBAで一時中断したプログラムの...
-
jqueryで診断テストはつくれま...
-
ASP.net MVC セッションハイジ...
-
フォームデータをlocation.repl...
-
submitボタンにvalue属性の値で...
-
ACCESS2010 WEBブラウザーコン...
-
c# 文字列の最後から1文字削除...
-
サーバー上の全セッション変数...
-
ポストバック時の画面スクロー...
-
SPREADでカーソルの位置を1行目...
-
DragEnterイベントについて(VS...
-
【C#】 『monthCalendar』 の質問
-
ドラッグを用いての拡大/縮小
-
ただいま勉強始めたての初心者...
-
JSPでボタンを押したら、文字が...
-
【ASP.NET】UpdatePanel上の制御
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の端末からのみWebシステム...
-
PHPからWindowsログインユーザ...
-
えきねっとのログイン画面はどこ?
-
ログインフラグがわかりません。
-
オープンIDでのサービス間の...
-
足跡が・・・
-
webアプリケーション開発の考え方
-
ASP.NETで作成されたログインペ...
-
phpmyadminでDBが作成できない。
-
勝手にログアウトされてしまい...
-
Global.asaについて
-
バッチファイルでログイン後の...
-
ログイン画面作成
-
UWSCで基本認証をクリアしたい...
-
ASP.NET MVC 最初からあるログ...
-
ログインクッキーの安全性
-
セッション管理について(同時...
-
複数のヤフーIDの画面ウィンド...
-
WebBrowserでGmailに自動ログイン
-
facebookのapiでログイン
おすすめ情報