概要: |
リンク 分類:
[Document(文章)からデータを取得]
/ [Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル:
[IEを使ったVBAのサンプル]
/ [小さなVBAでIE操作のコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
どうも、三流プログラマーのKen3です。 今回は、 InternetExplorerの操作で、Frame関係を探ってみます。 なかなか、相手は強敵でした・・・/* * 1.今回のキッカケ */
掲示板に下記の質問をもらいました。 ----- >別のFARMEにデータを送りたいのですが >こんなのつくりましたがうまくゆきません > URL = "http://******/" > Set objIE = CreateObject("InternetExplorer.Application") > objIE.Visible = True > objIE.Navigate URL > > objIE.Parent.Document.Forms("Logon").PassWord.Value = "123" > > objIE.Parent.Document.Forms("Logon").PassWord.Value = "123" >がエラーになります?対処法を教えてください。 >よろしくお願い致します。 ----- フレームかぁ、避けていたけど、来ましたね質問が。。。/* * 2.気分を変えて、参照設定から探ってみます */
汚い手で女の子に触れると嫌がられる? じゃなくって、 いつも、私は手抜きで、AS Objectとやっているので、 なぜExcelもIEも同じAs Objectなのか?と質問 いっぱいもらうので、 今日は、皆さんが好きな、型をキチント指定して作ってみます。 その代わり、参照設定のエラー、バージョン問題があるとイヤなので、 サンプルプログラムのlzhは無しで行きます。 自分で打ち込みながらやったほうが、力になるので(手抜きの言い訳ですが) まず、参照設定を行います。 参照設定では、MicroSoft Internet Contorlsを選択します。 ※あまり関係ないけど、shdocvm.dllを参照していることがわかります。 次に、変数を宣言します。 dim objIE as と打ち込むと、リストから選択できます。 ここで、 Dim objIE As InternetExplorer と選択します。 ↑選択イメージ そんな感じで、いつもの型が不明のObject型から、 As InternetExplorer と 型を指定してみました。 あとは、普通にオブジェクトを作って代入します。 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") まぁ、いつも通りですね。 参照設定をしていると、ここからチト違うのが、 objie.と打ち込むと、プロパティ、メソッドが表示されます。 objIE.Visible = True もコーディングするのが比較的楽です。 さてと、だったら、Excelのように簡単にいくかなぁ・・・ と思ってたら、ガイドしてくれるのもここまでで、 objIE.Document. ここまではOKなのに、 Document.と入力しても何も出てこない。 しかたない、F1押しますか、 あらら、いつものヘルプが出ない・・・ う〜ん、どうしましょう・・・/* * 3.みなさんはF2のオブジェクトブラウザって使ったことある? */
みなさんはF2のオブジェクトブラウザって使ったことありますか? F2を押します(F1の隣って、あたりまえか) すると、オブジェクトブラウザって画面が表示されると思います。 全てのライブラリから、 SHDocVwを選択します。 すると、 InternetExplorerのメンバーまでは見れるけどその先がまだ見れない・・・ ↑InternetExplorerのメンバーまでたどりついた。 まだ何か足りないのね、参照設定でそれらしき物を再度探す。 と、 MicroSoft HTML Object Labrary なんてのがあるじゃないですか。 ※いままで、見逃してた・・読者の皆さんスミマセン。 ↑やっと探し当てた、MicroSoft HTML Object Labrary 中身を確認してみると、(F2のオブジェクトブラウザで) MSHTMLとライブラリを選択、 クラスは、HTMLDocumentを選択すると、 おっ、よく見かけた.Allなんかも出てくるし、 スクロールすると、 framesなんてメンバーが存在する。 ^^^^^^ これをクリックすると、 Property Frames AS FramesCollection 読み取り専用 HTMLDocumentのメンバ なんて感じの説明とリンクが出てくる。 ↑HTMLDocumentのframesを選択した画面 まだまだ不明なので、 次に、リンク先のFramesCollectionをクリックして探ってみると、 Class FramesCollection MSHTML のメンバ だってぇ? オイオイ、頭に戻ったか?(循環参照か?ヘルプのたらいまわし状態?) でも、FramesCollectionは、 Item と length をメンバーとして持っているのがわかった。 ↑FramesCollectionを選択した画面 Itemは、HTMLを表すのかぁ。 ^^^^^^^^^^^^^^^^^^^^^^^^^^ ※まぁ、よく考えてみれば、フレームの先は、 HTMLのドキュメントなので、 作りはOKなんでしょうね。 index.html でフレーム分割、 a.html と b.asp を表示してれば、 index.htmlのフレーム要素(ITEM)は2個(length)です。 ITEMの中身はHTMLドキュメントって言ってるよ、 そりゃそうか、フレームで分割されていても、 item(0)はa.html item(1)はb.aspなんだから、 フレームのアイテムは、HTMLドキュメントと言ってるのは。 ↑ゴメンなさい、少し文章変ですよね。/* * 4.フレーム処理に各Objectの型をキチント指定しながら挑戦 */
日本語、私、うまく書けないので、 みなさんと共通に話せると思う、 VBAって言語を混ぜて説明するので、 聞いてくださいね。 オイオイ(笑)単なるソースを紹介って言えよボケ。 簡単なIE関係の型を使った解説を始めます。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ まず、普通のフレーム無しのHTMLから。 http://www.ken3.org/cgi-bin/test/test068.html がログインの処理画面です。 ユーザー名にKen3 パスワードにaaa と入力してみます。 test068.htmlのHTMLソース(途中まで)は、 <html> <head> <title>けんぞうのへんてこな世界へようこそ</title> </head> <body bgcolor=#ffffff text=#000000> <center> <h2>けんぞうのへんてこな世界へようこそ</h2> <br> <table bolder=1> <FORM ACTION="test068-1.asp" METHOD="POST"> USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br> <INPUT TYPE="submit" NAME="btn01" VALUE="ログイン"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> </table><br> <a Href="test068-2.asp" TARGET="_top">新規ユーザー登録</a><br> </center> <br> ・ ・ と USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br> が、入力エリアです。 これに対して、(このHTML入力フォームに対して) 入力処理で下記のプログラムを作りました。 No.105 VBAからIE操作 .document.forms(0).Submit でフォーム送信処理 http://www.ken3.org/vba/backno/vba105.html では、
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 |
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 HTMLDocument '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 HTMLDocument '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 |
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 |
操作動画 http://www.youtube.com/watch?v=P-FC3baJkzo です。
↑こんな感じで、デバック、してます。※わかっててやっているから、で、いきなりこのコードは書けないんだけど、、、
元の質問、[QA20110523 VBA IE操作、フレームの操作をデバック] を見る
投稿時間:2004/07/08(Thu) 20:58 投稿者名:yamabato URL : タイトル:Web上の表をExcel 初めてお世話になります。 |
投稿時間:2004/07/09(Fri) 13:25 投稿者名:Ken3(管理者) Eメール: URL : タイトル:パラメータを渡す表示まで、次はフレームかな 何も変えてないけど Sub aaaa() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) 'クッキーや参照元ミテイルトイヤなのでトップページに飛ぶ objIE.navigate "http://www.data.kishou.go.jp/" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '気象庁電子閲覧室の検索結果のページに飛ぶ Dim strURL As String 'URLを組み立てる、パラメータ付き、今は直接だけど後日変更しやすいようにする strURL = "http://www.data.kishou.go.jp/meteo/cgi-bin/search.cgi?" strURL = strURL & "frame=0&graph=0" strURL = strURL & "&prefecture=47" '47都道府県の47番目? strURL = strURL & "&observation=2&spot=00000&data=2" strURL = strURL & "&year=2004&month=06&day=00&mode=0" '日付範囲か? 'そんなこんなで、組み立てたページへ飛ぶ objIE.navigate strURL '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop 'ここからが色々試しましたがわかりません。 End Sub ここから、フレームを探ってみますか。 次はフレームの攻略ですね。 |
投稿時間:2004/07/09(Fri) 13:48 投稿者名:Ken3(管理者) Eメール: URL : タイトル:ダミーのフレームに騙されないで IEで表示、ソースとすると、 <FRAMESET ROWS=20%,* FRAMEBORDER=0> <FRAME SRC="search.cgi?frame=1&graph=0&prefecture=47&observation=2&spot=0&data=2&year=2004&month=6&day=0&mode=0&half=0" NAME="frm_h"> <FRAME SRC="/meteo/dummy.htm" NAME="frm_m"> </FRAMESET> と表示される。 かかれているように、 <FRAME SRC="search.cgi?f 〜〜〜 NAME="frm_h" と <FRAME SRC="/meteo/dummy.htm" NAME="frm_m"> ですね。 これって、嫌がらせのダミーフレームなのか?なんてことは置いといて、 NAME="frm_h"のデータをもらいたいですよね。 と思ったら、このダミーがくせもの、巨人の元木様かオイ? 実際は、OnLOADのJavaで、下のダミーフレームのほうにデータを書いてます。 Sub aaaa() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) 'クッキーや参照元ミテイルトイヤなのでトップページに飛ぶ objIE.navigate "http://www.data.kishou.go.jp/" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '気象庁電子閲覧室の検索結果のページに飛ぶ Dim strURL As String 'URLを組み立てる、パラメータ付き、今は直接だけど後日変更しやすいようにする strURL = "http://www.data.kishou.go.jp/meteo/cgi-bin/search.cgi?" strURL = strURL & "frame=0&graph=0" strURL = strURL & "&prefecture=47" '47都道府県の47番目? strURL = strURL & "&observation=2&spot=00000&data=2" strURL = strURL & "&year=2004&month=06&day=00&mode=0" '日付範囲か? 'そんなこんなで、組み立てたページへ飛ぶ objIE.navigate strURL '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '↑ところが、これだけだと、別のフレーム呼んだだけで、完了になる 'そこで、ステータスを見ないといけないんですね。 '.ReadyState = READYSTATE_COMPLETE Do While objIE.ReadyState <> 4 '4の完了以外ループ '何もしないループ(笑) DoEvents Loop 'フレームのデータを取り込む Dim objFRAME As Object Set objFRAME = objIE.Document.Frames("frm_m") 'テストでソースをメッセージボックスで表示 MsgBox objFRAME.Document.all(1).innerHTML End Sub 私が騙されただけで、元木は関係ないか。 フレームのソースを見ると、 <FRAMESET ROWS=20%,* FRAMEBORDER=0> これって、上のフレームが20%下は残りの指定なので、 データは、ダミーのフレーム <FRAME SRC="/meteo/dummy.htm" NAME="frm_m"> に表示されているみたいです。 だまされた・・・のと、 '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop これだけだと、違うフレームの読み込みが完了した時点でBusyが解除されるので、 '.ReadyState = READYSTATE_COMPLETE Do While objIE.ReadyState <> 4 '4の完了以外ループ '何もしないループ(笑) DoEvents Loop こいつも必要です。 あと、読み込み終わってから、ソースを変えているらしいので、 'テストでソースをメッセージボックスで表示 MsgBox objFRAME.Document.all(1).innerHTML と、1に全てのソースが入ってました、なぜだろう? まぁ、ソース全体が取れたので、次はテーブルを読み込むか。 |
投稿時間:2004/07/09(Fri) 13:58 投稿者名:Ken3(管理者) Eメール: URL : タイトル:テーブルを書き出すところが2重のテーブル? Sub aaaa() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) 'クッキーや参照元ミテイルトイヤなのでトップページに飛ぶ objIE.navigate "http://www.data.kishou.go.jp/" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '気象庁電子閲覧室の検索結果のページに飛ぶ Dim strURL As String 'URLを組み立てる、パラメータ付き、今は直接だけど後日変更しやすいようにする strURL = "http://www.data.kishou.go.jp/meteo/cgi-bin/search.cgi?" strURL = strURL & "frame=0&graph=0" strURL = strURL & "&prefecture=47" '47都道府県の47番目? strURL = strURL & "&observation=2&spot=00000&data=2" strURL = strURL & "&year=2004&month=06&day=00&mode=0" '日付範囲か? 'そんなこんなで、組み立てたページへ飛ぶ objIE.navigate strURL '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '↑ところが、これだけだと、別のフレーム呼んだだけで、完了になる 'そこで、ステータスを見ないといけないんですね。 '.ReadyState = READYSTATE_COMPLETE Do While objIE.ReadyState <> 4 '4の完了以外ループ '何もしないループ(笑) DoEvents Loop 'フレームのデータを取り込む Dim objFRAME As Object Set objFRAME = objIE.document.Frames("frm_m") 'テーブルのデータをExcelに書き込む Dim objTABLE As Object 'テーブルのオブジェクトを入れる Dim yline As Integer Dim xline As Integer Rows("10:1000").Delete '行の削除 yline = 10 '10行目からデータを書く 'TABLEデータをループする For Each objTABLE In objFRAME.document.all.tags("table") Debug.Print "Rows.Length:" & objTABLE.Rows.Length Debug.Print "Cells.Length:" & objTABLE.Cells.Length '.Rowのオブジェクトを取り出す For n = 0 To objTABLE.Rows.Length - 1 xline = 1 'objROWの.Cellsでループさせる For Each objCELLS In objTABLE.Rows(n).all Cells(yline, xline) = objCELLS.InnerText xline = xline + 1 Next yline = yline + 1 '書き込み位置を移動する Next n yline = yline + 2 '書き込み位置を2行移動する Next MsgBox "終了、確認してください" End Sub ポイントは、 ^^^^^^^^^^^^ objIE.document.all.tags("table") で、テーブルのオブジェクトを取り出し、 そのオブジェクトから、 For n = 0 To objTABLE.Rows.Length - 1 と row(行)数分ループ さらに、objROWの.Cellsでループさせるため、 For Each objCELLS In objTABLE.Rows(n).all と、しています。 これで行くかなぁ・・・と思ったら、 あれれ・・・もしかして、2重のテーブルなのか・・・ うまく行かない・・・ヤバイなぁ。 |
投稿時間:2004/07/09(Fri) 14:17 投稿者名:Ken3(管理者) Eメール: URL : タイトル:Rows.Lengthで2重のテーブルをかわすが・・・ Sub aaaa() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) 'クッキーや参照元ミテイルトイヤなのでトップページに飛ぶ objIE.navigate "http://www.data.kishou.go.jp/" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '気象庁電子閲覧室の検索結果のページに飛ぶ Dim strURL As String 'URLを組み立てる、パラメータ付き、今は直接だけど後日変更しやすいようにする strURL = "http://www.data.kishou.go.jp/meteo/cgi-bin/search.cgi?" strURL = strURL & "frame=0&graph=0" strURL = strURL & "&prefecture=47" '47都道府県の47番目? strURL = strURL & "&observation=2&spot=00000&data=2" strURL = strURL & "&year=2004&month=06&day=00&mode=0" '日付範囲か? 'そんなこんなで、組み立てたページへ飛ぶ objIE.navigate strURL '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '↑ところが、これだけだと、別のフレーム呼んだだけで、完了になる 'そこで、ステータスを見ないといけないんですね。 '.ReadyState = READYSTATE_COMPLETE Do While objIE.ReadyState <> 4 '4の完了以外ループ '何もしないループ(笑) DoEvents Loop 'フレームのデータを取り込む Dim objFRAME As Object Set objFRAME = objIE.document.Frames("frm_m") 'テーブルのデータをExcelに書き込む Dim objTABLE As Object 'テーブルのオブジェクトを入れる Dim yline As Integer Dim xline As Integer Dim n As Integer Rows("10:1000").Delete '行の削除 yline = 10 '10行目からデータを書く 'TABLEデータをループする For Each objTABLE In objFRAME.document.all.tags("table") Debug.Print "Rows.Length:" & objTABLE.Rows.Length Debug.Print "Cells.Length:" & objTABLE.Cells.Length 'いつもの小細工・・・日付は30と多いから、 'Rows.Lengthの行数が5以下はテーブルの親と決め付けてみる。 If objTABLE.Rows.Length <= 5 Then '行数が5以下のテーブルオブジェクトには何もしない Else '行数が5以上のテーブルオブジェクトを書き出す '.Rowのオブジェクトを取り出す For n = 0 To objTABLE.Rows.Length - 1 xline = 1 'objROWの.Cellsでループさせる For Each objCELLS In objTABLE.Rows(n).all Cells(yline, xline) = objCELLS.InnerText xline = xline + 1 Next yline = yline + 1 '書き込み位置を移動する Next n End If yline = yline + 2 '書き込み位置を2行移動する Next MsgBox "終了、確認してください" End Sub 2重のテーブルを回避したかったので、 'Rows.Lengthの行数が5以下はテーブルの親と決め付けてみる。 If objTABLE.Rows.Length <= 5 Then '行数が5以下のテーブルオブジェクトには何もしない Else '行数が5以上のテーブルオブジェクトを書き出す '.Rowのオブジェクトを取り出す としてみた。 これで、2重のテーブルは回避できたが・・・・ セットされているデータを良く見ると、違うよなこれ・・・・ 位置がかなり違うよ。 う〜ん・・・気になるのはデバックに表示されている数、 Cells.Length:1 Rows.Length:32 Cells.Length:800 Rows.Length:1 Cells.Length:1 Rows.Length:32 Cells.Length:800 なんでセルの数が800個もあるの???? テーブルのNOWRAPってなんだ? う〜ん・・・まだまだ、先は長そうな予感・・・ |
投稿時間:2004/07/10(Sat) 11:05 投稿者名:yamabato URL : タイトル:Re: Rows.Lengthで2重のテーブルをかわすが・・・ 4通にも及ぶ早速の回答ありがとうございます。 |
投稿時間:2004/07/11(Sun) 12:39 投稿者名:yamabato URL : タイトル:Re: Rows.Lengthで2重のテーブルをかわすが・・・ Ken3(管理者)さん、お世話になっています。 |
投稿時間:2004/07/14(Wed) 20:25 投稿者名:Ken3(管理者) Eメール: URL : タイトル:上の.Busyは無くてもOK > 何とか動くだけの物できましたので報告します |
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。