質問
VBAでWebページに入力&ボタンクリック
- 投稿日時:2006/04/17 12:31

URLがhttp://xxx.com/のページで次のようなフォームのときExcelで自動入力クリックするマクロを作りたいです。
<input type="hidden" name="room" value="aaaaa"/>
<a name="regist" id="regist">総登録数</a>
<table width="402" border="1">
<tr>
<th align="center" colspan="2"><div align="left"><big>登録ページ</big></div></th>
</tr>
<tr>
<td colspan="2"> name
<input type="text" size="20" name="name" value="" maxlength="20">
Email
<input type="text" size="20" name="email" value="">
</td>
</tr>
<tr>
<td align="center">pass</td>
<td><input type="text" size="20" name="pw" maxlength="12" value=""></td>
</tr>
<tr>
<td align="center">category</td>
<td><select size="1" name="junle">
<option value="pp" selected="selected">カテゴリ選択</option>
<option value="0">その1</option>
<option value="1">その2</option>
</select></td>
</tr>
<tr>
<td align="center">title</td>
<td><input type="text" size="55" name="title" maxlength="25" value=""></td>
</tr>
<tr>
<td align="center">URL</td>
<td><input type="text" size="55" name="url"></td>
</tr>
<tr>
<td align="center">intro</td>
<td><input type="text" name="comment" size="55" maxlength="50" value=""></td>
</tr>
<tr align="center">
<td><br></td>
<td><input type="submit" name="mode" value="登録">
<input type="reset" value="クリア"></td>
</tr>
</table>
入力する内容は1行目のA,B,C・・にname,email,pass・・・が順番にそれぞれ入っています。
回答 (5件)
- 最新から表示
- 回答順に表示
- ベストアンサーのみ表示
No.5ベストアンサー20pt
- 回答日時:2006/04/18 21:21
失礼しました。
objIE.document.all.Mode.Click
を
objIE.Document.Forms(0).Submit
に置き換えてください。
この回答へのお礼
何とか自分でできました。
いろいろ教えていただきありがとうございました。
この回答への補足
objIE.Document.Forms(0).Submitでは投稿できませんでしたが、
objIE.document.all.Mode(0).Clickで投稿できました!
あと、このままでは常に同じ内容投稿となってしまうので、
エクセルのセルA1に山田 太郎,B1にtaro@***.com,C1にpass1,D1に1,
E1にtitle1,F1にurl1.cgi,G1にcomment1が書いてあるときに内容を読み込んで投稿するにはどうすればいいでしょうか?
objIE.document.all.Name.Value = "A1の内容"のようにしたいです。
ついでにエクセルの1行目の内容が終わると自動で2行目の内容を投稿するというようにできれば完璧なのですが・・・。
No.4
- 回答日時:2006/04/18 20:30
サイトの内容については、置いておいて。。。。
なんというズボラな、設計のサイトなんだろう。
ボタンをクリックできない原因は、name="mode"という要素が3箇所も
あり、特定できないからです。
解決策はもうしばらくお待ちください。。
- 質問者のみ
- この回答にお礼をつける
No.3
- 回答日時:2006/04/17 20:24
まず、マクロです。
Private Declare Function FindWindowEx _
Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long _
, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetParent _
Lib "user32" (ByVal Hwnd As Long) As Long
Private Declare Sub PostMessage _
Lib "user32" Alias "PostMessageA" _
(ByVal Hwnd As Long, ByVal wMsg As Long _
, ByVal wParam As Long, ByVal lParam As Long)
Private Declare Sub SetTimer Lib "user32" _
(ByVal Hwnd As Long, ByVal nIDEvent As Long _
, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
Private Declare Sub KillTimer Lib "user32" _
(ByVal Hwnd As Long, ByVal nIDEvent As Long)
Private Const WM_CHAR As Long = &H102
Private Const BM_CLICK As Long = &HF5
Dim objIE As Object
Sub web_open()
Dim myURL As String
Set objIE = CreateObject("InternetExplorer.application")
myURL = "c:\vbtest\vbtest.html"
objIE.Navigate myURL
While objIE.Busy Or objIE.ReadyState <> 4
Wend
End Sub
Sub dataset()
Call web_open
objIE.Visible = True
'objIE.document.all.ボタン.Click
objIE.document.all.Name.Value = "山田 太郎"
objIE.document.all.Email.Value = "taro@hoge.com"
objIE.document.all.pw.Value = "pass1"
objIE.document.all.junle.Value = "1"
objIE.document.all.Title.Value = "title1"
objIE.document.all.URL.Value = "url1.cgi"
objIE.document.all.Comment.Value = "comment1"
objIE.document.all.Mode.Click
End Sub
htmlファイルです。submit の先が書かれていなかったため、actionは
自分自身としました。
セットする内容は、Excelシートから拾ってください。
vbtest.html
<html>
<form name="dataset" action="vbtest.html">
<input type="hidden" name="room" value="aaaaa"/>
<a name="regist" id="regist">総登録数</a>
<table width="402" border="1">
<tr>
<th align="center" colspan="2"><div align="left"><big>登録ページ</big></div></th>
</tr>
<tr>
<td colspan="2"> name
<input type="text" size="20" name="name" value="" maxlength="20">
Email
<input type="text" size="20" name="email" value="">
</td>
</tr>
<tr>
<td align="center">pass</td>
<td><input type="text" size="20" name="pw" maxlength="12" value=""></td>
</tr>
<tr>
<td align="center">category</td>
<td><select size="1" name="junle">
<option value="pp" selected="selected">カテゴリ選択</option>
<option value="0">その1</option>
<option value="1">その2</option>
</select></td>
</tr>
<tr>
<td align="center">title</td>
<td><input type="text" size="55" name="title" maxlength="25" value=""></td>
</tr>
<tr>
<td align="center">URL</td>
<td><input type="text" size="55" name="url"></td>
</tr>
<tr>
<td align="center">intro</td>
<td><input type="text" name="comment" size="55" maxlength="50" value=""></td>
</tr>
<tr align="center">
<td><br></td>
<td><input type="submit" name="mode" value="登録">
<input type="reset" value="クリア"></td>
</tr>
</table>
</form>
</html>
これを繰り返し実行するんですよね。。
つまり、vbtest.htmlでデータ入力して、submit先で、データ処理をする。
それを何回か、繰り返すとなると、同期を取らなければならなくなりま
すね。
この回答への補足
vbtest.htmlを自分で作ってやってみたところうまく動作していました。
ですが、実際のサイトURLに書き換えてやってみたところ登録ボタンを押してくれず、フォームに入力するところまでしか動作しませんでした。
実際に送りたいサイトはalinkというリンク集です。
例えば http://alink.uic.to/です。
教えて頂いたマクロで変更した部分はURL部分です。
どこを修正すればalinkで投稿できるようになるでしょうか?
- 質問者のみ
- この回答にお礼をつける
No.2
- 回答日時:2006/04/17 12:57
すみません、私が無知でした。
VBAから、IEをコントロールできます。
参照URLを見るか、
http://www2.moug.net/app/bbs/search.php?cat=exvb …
を参考にしてみてください。
この回答への補足
すでにそれらのサイトは見て回ってやってみましたが私の技術不足でうまくいきませんでした。
ページを開くところまでは動作確認しましたが、フォームには何も表示されません。
具体的な回答を希望します。
- 質問者のみ
- この回答にお礼をつける
No.1
- 回答日時:2006/04/17 12:41
VBAは、Office製品の内部を制御することを前提に作られています。
ブラウザを制御することは、難しいでしょうね。
UWSCなど、キーロガーツールなどで、Excelからブラウザへのコピペ・
ボタン押下など実行させてみてはいかがですか?
- 質問者のみ
- この回答にお礼をつける
このQ&Aを見た人はこんなQ&Aも見ています
- 4EXCEL VBA でIEを制御して、INPUT type=file で出るダイアログに入力できませんか?
- 5エクセルマクロでサイトにパスワードを入力
- 6エクセルのデータをwebフォームに転記したい
- 7VBAからIEを操作する時のウィンドウの選択の仕方がわかりません
- 8VBAからhttpを呼びソースを取得
- 9エクセルマクロでIE(java?のページ)を操作したい
- 10EXCEL VBA で現在開いているブックのファイル名を取得する方法
- 11VBA(エクセル)で自動的にボタンをクリックさせるには
- 12エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
- 13VBA IE操作 自動ログイン
- 14ダウンロードダイアログをVBAから操作するには?
- 15Excel VBA で Webからデータを取得する方法
- 16INPUTにnameがない場合のsubmit
- 17vbaでIEを閉じるだけの処理
- 18VBAからIE操作 .document.forms(0).Submit でフォーム送信処理
- 19VBAでIEの情報を取得したい【初心者】
- 20起動済みのIEをハンドルから操作するには
注目の記事
教えて!Firefox
より速く、より安全なウェブブラウザ「Firefox(ファイアーフォックス)」に関する疑問をみんなで解決。全くの初心者から上級者までFirefoxの魅力を十分に味わうために、教えて!gooのユーザーみんながお手伝いします。
このQ&Aを見た人がよく見るQ&A
このカテゴリで人気のQ&Aランキング
- 4iPadでワード、エクセルを使うには...
- 5Excel文書が読み取り専用になって解...
- 6エクセルのセルに入力した文字数
- 7エクセルで重複しているデータの抽...
- 8行間を詰めるには・・・
- 9エクセルで数式の結果が反映されな...
- 10マイクロソフト以外で一番のoffice...
- 11エクセルで条件に合うものを別シー...
- 12excelからexcelへの差し込み印刷
- 13VLOOKUP関数で複数の検索値を設定し...
- 14Excelで、エラーの #DIV/0! を表示...
- 15EXCELの日付データを文字列に変換し...
- 16Excelで入力したデータを他のシート...
- 17フリーの表計算ソフト
- 18エクセルで列の全ての項目に文字を...
- 19Excelで掛け算
- 20ワードの文章をエクセルに貼り付け...






