Sub ie_test()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/test/test068.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'項目名を指定して、データをセットする
objIE.document.all.userid.Value = "Ken3" 'ユーザー名
objIE.document.all.pass.Value = "aaa" 'パスワード
'フォームをSubmitする
objIE.document.forms(0).Submit
End Sub
と、
'項目名を指定して、データをセットする
objIE.document.all.userid.Value = "Ken3" 'ユーザー名
objIE.document.all.pass.Value = "aaa" 'パスワード
みたいにセットしてました。
これを、
MicroSoft Internet Contorls
MicroSoft HTML Object Labrary
の
2つ参照設定を行い、
~~~~~~~~~~~~~~~~~~~~
オブジェクト変数の型をキチント指定して書いてみます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub ie_test()
Dim objIE As InternetExplorer 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/test/test068.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'ドキュメントオブジェクトの代入
Dim objDOC As IHTMLDocument 'HTMLドキュメント
Set objDOC = objIE.Document
'項目名を指定して、データをセットする
objDOC.all("userid").Value = "Ken3" 'ユーザー名
objDOC.all("pass").Value = "aaa" 'パスワード
End Sub
Sub ie_fream()
Dim objIE As InternetExplorer 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/vba/test116.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
Dim objFRAME As FramesCollection
Set objFRAME = objIE.Document.frames 'フレームの代入
Debug.Print "フレームの数は" & objFRAME.Length
'ドキュメントオブジェクトの代入
Dim objDOC As IHTMLDocument 'HTMLドキュメント
Set objDOC = objFRAME("F_RIGHT").Document 'フレームのドキュメントをセット
'↑objFRAME(0).DocumentやDocument(1).Documentもアリです
'Set objDOC = objFRAME(1).Document 'フレーム(1)をセットでも動きます
'項目名を指定して、データをセットする
objDOC.all("userid").Value = "Ken3" 'ユーザー名
objDOC.all("pass").Value = "aaa" 'パスワード
End Sub
ポイントは、
~~~~~~~~~~~~
Dim objFRAME As FramesCollection
で、
フレーム用のオブジェクト変数を作成して、
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Set objFRAME = objIE.Document.frames 'フレームの代入
で、フレームを代入
おまけで、
Debug.Print "フレームの数は" & objFRAME.Length
と、.Lengthでフレーム数を表示して、
あとは、
'ドキュメントオブジェクトの代入
Dim objDOC As IHTMLDocument 'HTMLドキュメント
HTMLのドキュメントに、
Set objDOC = objFRAME("F_RIGHT").Document 'フレームのドキュメントをセット
と
"F_RIGHT"とフレーム名称を指定したフレームのドキュメントを代入してます。
objFRAME(0).Document
objFRAME(1).Document
など、番号で参照も可能です。
※0から始まり、.Lengthでフレーム数がわかります。
こんな感じで、フレームは、
objIE.Document.frames
だったんですね。
いろいろと型を指定して、代入して、遊んでみました。
Sub ie_test_2()
Dim objIE As Object '型は何でも来い、得意のObject型
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'フレームページを表示する
objIE.Navigate "http://www.ken3.org/vba/test116.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'TOPのオブジェクトから項目まで.で行く(笑)
objIE.Document.frames("F_RIGHT").Document.all("userid").Value = "Ken3"
objIE.Document.frames("F_RIGHT").Document.all("pass").Value = "aaa"
End Sub
IEの.Silent、調べてみると、
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/properties/silent.asp
> Silent Property
> Sets or retrieves a value that indicates whether
> the object can show dialog boxes.
だってさ、これを読者から教えてもらった、
エキサイトの翻訳 http://www.excite.co.jp/world/text/ にかけてみると
> オブジェクトがダイアログ・ボックスを示すことができるかどうか示す値を
> セットするか検索します。
だって、なんとなく、これでいいような気がするんだけど。。。。
> Dialog boxes and messages can be shown.
> Critical errors and security alerts are not supressed.
> true Dialog boxes are not shown.
も変換すると、
>ダイアログ・ボックスとメッセージは示すことができます。
>重大なエラーおよびセキュリティ警報はsupressedされません。
>真実のダイアログ・ボックスは示されません。
セキュリティなど警告以外は、出来そうなんだけど・・・
^^^^^^^^^^^^^^^^^^^^^^^^^^
Sub ie_test()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/vba/test117.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
MsgBox "巡回終了"
End Sub
Sub ie_test_Silent()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'.Silentを使ってみた が True/False どちらもダメだった・・・
objIE.Silent = True 'なんで効かないの?
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/vba/test117.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
MsgBox "巡回終了"
End Sub
どうも、三流プログラマーのKen3です。
今回は、
Microsoft Web Browser コントロール
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
をフォームに貼って、使用してみます。
/*
* 1. フォームにIE コントロールを貼る
*/
いままで、
インターネットエクスプローラー(IE)を起動するには、
Sub ie_test()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
End Sub
と、
ExcelやAccessの起動でお世話になっている、
CreateObjectを使用して、
"InternetExplorer.application"
を作成して外側にアプリケーションを起動してました。
私が最近気が付いたのですが、
AccessやExcelのフォームに(フォーム内に)
ワクを作成して、Web画面を表示したり、管理することが出来ます。
Accessのユーザーフォームを例にして説明します。
まず、Accessのフォーム作成で、
挿入・ActiveXコントロールを選択します。
次に、
Microsoft Web Browser コントロールを選択します。
すると、簡単にコントロールを貼ることが出来ます。
Sub ie_test_click()
Dim objIE As Object 'IEオブジェクト参照用
Dim objTAG As Object
Dim y As Integer
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/g/index.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'
y = 2
'.All のデータをループする
For Each objTAG In objIE.document.all
Cells(y, "A") = objTAG.tagName
Cells(y, "B") = objTAG.innerHTML
Cells(y, "C") = objTAG.innerTEXT
Cells(y, "D") = objTAG.outerHTML
Cells(y, "E") = objTAG.outerTEXT
y = y + 1
Next
End Sub
Sub ie_test_click()
Dim objIE As Object 'IEオブジェクト参照用
Dim objTAG As Object
Dim y As Integer
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/cnt/test.asp"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'データを削除する
Rows("3:1000").Select
Selection.Delete Shift:=xlUp
'3行目から書き込む
y = 3
'.body のデータをループする
For Each objTAG In objIE.document.body.all
Cells(y, "A") = objTAG.tagName
Cells(y, "B") = objTAG.innerHTML
Cells(y, "C") = objTAG.innerTEXT
Cells(y, "D") = objTAG.outerHTML
Cells(y, "E") = objTAG.outerTEXT
y = y + 1
Next
End Sub
Sub ie_make_table_test()
Dim objIE As Object 'IEオブジェクト参照用
Dim objTAG As Object 'TAGのオブジェクトを代入
Dim y As Integer
Dim x As Integer
Dim objTableItem As Object 'TABLE内のITEM検索用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/cnt/test.asp"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'.body のデータをループする
For Each objTAG In objIE.document.body.all
'テーブルのタグを探す
If objTAG.tagName = "TABLE" Then
'新規ブックを追加する
Workbooks.Add
'カウンタの初期化
y = 0 '行カウンタ
'テーブル内のITEMでループする
For Each objTableItem In objTAG.all
If objTableItem.tagName = "TR" Then
y = y + 1 '行カウンタを+1
x = 1 '列カウンタを1(左端にする)
End If
If objTableItem.tagName = "TD" Then
'テキストデータをセットする
Cells(y, x) = objTableItem.innerText
x = x + 1 '列カウンタを+1(次にする)
End If
Next
End If
Next
End Sub
なんか、ループが深いですが、
ポイントは、
^^^^^^^^^^^^
For Each objTAG In objIE.document.body.all
と、<BODY>内をループで回し、タグ(ITEM)を1つ1つ取り出します。
取り出したタグがTABLEか判断するには、
If objTAG.tagName = "TABLE" Then
と、.tagNameで判断してます。
※TABLEの要素を.document.body.allから見つけます。
見つけ方は、.tagNameとタグの名前がTABLEかで判断してます。
TABLEのITEM(要素、エレメント)を見つけたら、
今度は、そのTABLE内のITEMを1つ1つ取り出します。
For Each objTableItem In objTAG.all
objTAG.allがポイントです。
※objTAGがテーブルのオブジェクトです、
このオブジェクトは、階層構造になっており、
アイテムを複数持ってます。
そのアイテムを取り出すために、
For Each objTableItem In objTAG.all
と記述して、TABLEオブジェクトから要素(TRやTDなど)を取り出します
行の開始が<TR>なので、
If objTableItem.tagName = "TR" Then
y = y + 1 '行カウンタを+1
x = 1 '列カウンタを1(左端にする)
End If
と、行を+1列を開始位置の1にセットします。
<TD>がデータなので、
If objTableItem.tagName = "TD" Then
'テキストデータをセットする
Cells(y, x) = objTableItem.innerText
x = x + 1 '列カウンタを+1(次にする)
End If
と普通にデータをセットしてます。
--------------------
三流君の、小金稼ぎ、お小遣い稼ぎシリーズ3つ(稼げないだろコラ!!)
どれも参加無料:松竹梅じゃないけど今私がチャレンジしている3つを紹介
確実に月500ぐらい稼ぎたかったら、
http://www.ken3.org/etc/500yen/index.html
のアンケートに答えて謝礼がお薦め、500円でイーバンク、1000円商品券など
※私の実績も画面コピーで載せてます。
次は、まだ当たってないけど(オイオイ)、当ててHPに載せてやると気合入っている
プロ野球の勝敗ホームラン数を予想、100万を当たった人数で山分け
http://www.ken3.org/etc/500yen/5050.html ← TOTOじゃないけど当たらない
『チッ、大穴横浜の勝利に賭けてるのに当たらない(笑)』(横浜ファン:31歳)
※ファンを抜きにして、勝負しないと当たらないかも・・・
最後は、いろいろな近未来を予想する、予想.Net
http://www.ken3.org/etc/500yen/yosou.html
音楽でXXXはオリコンX位を当てる、新ドラマの視聴率どれが1位、
松井・新庄のニューヨーク対決は○勝○敗など、
自分の得意な分野の問題を選んでコインを賭ける。
※でも最低1000円分ポイント貯まらないと現金化できない、
現在私は、156円分しかポイント貯まっていない・・・
--------------------