【やりたいこと】
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
VBA ログイン後csvファイルをダウンロードする
Excel(エクセル)
-
URLDownloadToFile でダウンロード不可
Visual Basic(VBA)
-
日本語の文字化けを直す方法
Visual Basic(VBA)
-
-
4
XMLHTTPを用いて認証が必要なURLから情報をダウンロードする
XML
-
5
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
6
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
7
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
8
ユーザーフォーム スクロールバー 非表示にしたい
Excel(エクセル)
-
9
VBA: HTTPでのスクレイピング
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
13
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
14
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
15
エクセル ログインが必要なページのwebクエリ
Excel(エクセル)
-
16
VBAでWEB上の入力項目に値をいれたいのですがフォームのタイプがhiddenの場合の入れ方がわかりません。
Visual Basic(VBA)
-
17
VBAでEUC-JPのHTMLソースを取得しShift-JISにしたい
PowerPoint(パワーポイント)
-
18
構造体配列の特定のメンバーをFor~Eachで
Visual Basic(VBA)
-
19
VBA オブジェクトが必要です
Visual Basic(VBA)
-
20
Webページ中の javascript をVBAから実行するには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでHTTPログイン
-
勝手にログアウトされてしまい...
-
バッチファイルでログイン後の...
-
PHPからWindowsログインユーザ...
-
INPUTにnameがない場合のsubmit
-
戻るボタンで、ログイン中を維...
-
Enterキーでログイン
-
ASPで画面間のパラメタ受け渡し
-
異なるformのsubmitボタンを同...
-
Accessの画面更新を一時的に停...
-
HTTPリクエストヘッダーの設定...
-
ACCESS2010 WEBブラウザーコン...
-
今更、VBAでRPA、キーボード操...
-
SUBMITボタンを表示させないでS...
-
パワーポイント 円グラフにつ...
-
【C言語】JPEGのEXIF情報を書き...
-
【HTML /CSS】ヘッダー右上のず...
-
Webブラウザの閉じるボタン無効...
-
HTMLボタンの文字色を変え...
-
複数選択のListBoxでClickイベ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPからWindowsログインユーザ...
-
VBAでHTTPログイン
-
セッション管理について(同時...
-
戻るボタンで、ログイン中を維...
-
フォーム認証でのパスワードロック
-
ログインフラグがわかりません。
-
特定の端末からのみWebシステム...
-
ユーザー環境変数の一覧
-
【php】会員登録ログイン時シス...
-
PWを入れると別のページに飛ん...
-
ASP.NET MVC 最初からあるログ...
-
PHPで作成するログイン画面の作...
-
MAC版DW8 ログインパスワードの...
-
セレニウムで自動ログインする方法
-
ログイン履歴
-
複数のヤフーIDの画面ウィンド...
-
ログイン状態が切れないように...
-
PHPでログイン機能実装
-
Windows認証でDBにアクセスでき...
-
DFDの書き方について
おすすめ情報