【やりたいこと】
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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
URLDownloadToFile でダウンロード不可
Visual Basic(VBA)
-
VBA ログイン後csvファイルをダウンロードする
Excel(エクセル)
-
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
-
4
日本語の文字化けを直す方法
Visual Basic(VBA)
-
5
XMLHTTPを用いて認証が必要なURLから情報をダウンロードする
XML
-
6
VBA オブジェクトが必要です
Visual Basic(VBA)
-
7
Webページ中の javascript をVBAから実行するには
Visual Basic(VBA)
-
8
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
9
エクセルでエラーが出て困っています。
Excel(エクセル)
-
10
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
11
VBAでEUC-JPのHTMLソースを取得しShift-JISにしたい
PowerPoint(パワーポイント)
-
12
XMLHttpRequestでキャッシュを使用させないようにしたい
JavaScript
-
13
VBAでWEB上の入力項目に値をいれたいのですがフォームのタイプがhiddenの場合の入れ方がわかりません。
Visual Basic(VBA)
-
14
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
15
VBAでフォルダ内のhtmlファイルを読み込みたい
その他(プログラミング・Web制作)
-
16
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
17
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
18
ExcelVBAで今開いているユーザ情報を取得できますか?
Visual Basic(VBA)
-
19
VBAでchromeを動かしたいのですが、エラー出ます。
その他(パソコン・スマホ・電化製品)
-
20
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
勝手にログアウトされてしまい...
-
フォーム認証でのパスワードロック
-
VBAでHTTPログイン
-
【php】会員登録ログイン時シス...
-
windows統合認証とform認証の併用
-
青い枠のみのHTML
-
PHPからWindowsログインユーザ...
-
formでのtarget="_blank"2回目
-
C# Enterキーの動作について
-
c# 文字列の最後から1文字削除...
-
グリッドビューでのチェックボ...
-
ブラウザの×(閉じる)ボタンの...
-
Accessの画面更新を一時的に停...
-
今更、VBAでRPA、キーボード操...
-
同じソリューション内の別のプ...
-
コンピュータへの接続数が最大...
-
画面遷移が不正ですと表示されます
-
SPREADでカーソルの位置を1行目...
-
Webページ上のボタン等の位置を...
-
DataGridViewのチェックボック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでHTTPログイン
-
PHPからWindowsログインユーザ...
-
勝手にログアウトされてしまい...
-
青い枠のみのHTML
-
戻るボタンで、ログイン中を維...
-
特定の端末からのみWebシステム...
-
バッチファイルでログイン後の...
-
セッション管理について(同時...
-
2重ログインのチェック
-
XMLHTTPを用いて認証が必要なUR...
-
えきねっとのログイン画面はどこ?
-
フォーム認証でのパスワードロック
-
セレニウムで自動ログインする方法
-
phpmyadminでDBが作成できない。
-
vba ie操作 ログインしたい
-
vbaでログインできない 手動だ...
-
ASP.NETで作成されたログインペ...
-
DFDの書き方について
-
ログインフラグがわかりません。
-
Global.asaについて
おすすめ情報