[三流君]
[VBAで楽しく]
[VBA IE 操作]
−−> No.162 IE データセット後、JavaScriptを起動する
IE データセット後、JavaScriptを起動する
楽天のリンク取得方法が変わったので下記のソースだとテスト不可ですが。
参考程度に見てください
発行内容
IE データセット後、JavaScriptを起動する
どうも、三流プログラマーのKen3です。
今回は、
IE操作で、フォームにデータセット後、
JavaScriptを起動する、そんな処理を行ってみたいと思います。
/*
* 1.今回のキッカケ
*/
本を売って、小金を儲けよう、、、そんな不純な心の動きで、
amazon.com と 楽天ブック に 申し込みました。
商品個別リンクがあって、個別の商品リンクを作成できるみたいです。
この、個別リンクの作成にチャレンジしてみたいと思います。
楽天ブックで個別リンクを作るには、
http://books.rakuten.co.jp/afvc/afinfo/page03.html
のページに、
紹介したい本のISBN番号
と
自分の広告コード SIDとPIDを入力して 作成ボタンを押すと、作成されます。
ExcelのVBAから、Webブラウザコントロールを使って、データをセットしてみます。
/*
* 2.動作の仕組みを探る
*/
http://books.rakuten.co.jp/afvc/afinfo/page03.html
のhtmlを探ると、
form name=parts
input type="text" name="isbn"
input type="text" name="sid"
input type="text" name="pid"
となっていて、
ソースの表示ボタンは、
<a href = "JavaScript:parts('A')">
や
<a href = "JavaScript:parts('B')">
とjavascriptで処理となってます。
ボタンが押され、
JavaScript:parts('B')処理が走ると、
新規のウインドウに、広告用のソースコードが表示される、
そんな仕組みとなってます。
/*
* 3.仕様を簡単に書く
*/
フォームを作成して、ISBN番号、SID,PIDを入力させます。
SID [ ] ← 設定用のシートからデフォルトを表示する
PID [ ] ← 設定用のシートからデフォルトを表示する
ISBN [ ] ← 目的の番号を入力する
広告 [ ] ← 複数行のテキストボックスを作成して、
・ 広告用のソースを表示させる
・
[ ]
作成ボタン
ボタンが押されたら、
リンク作成ページへ飛び、データをセットして、
リンク作成ボタンを押す(javascriptをVBAから起動)
広告コード用の新規のウインドウが表示される。
そのウインドウから、広告コードを取り出し、
テキストボックスにセットする。
セット完了後、広告作成のweb表示・ブラウザを閉じる。
こんな感じの流れで、
フォームにパラメータセット、
データ送信
サーバー側でコード作成
結果のソースコードを取得
を行ってみたいと思います。
/*
* 4.問題点、技術確認
*/
処理やデータの流れを整理したら、
次は、
予想される問題点を整理します。
技術的に可能か?それとも不可能か?
仕様を聞いて、不安になった部分は?ありますか?
なんて感じで自分に自問自答しながら、項目をまとめていきます。
仕様書からプログラムを起こす前準備で、
・イメージが湧き出してすぐにでも作れそうと感じるか、
・それとも、不安になるか、、、
ここのファーストタッチが重要だと思います。
※性格的にいつも不安な担当者 や 根拠の無い自信がある担当者も居るんだけど。
今回の処理を私なりにまとめたポイントは、
webのコントロールにデータをセット可能か?
→ 過去やったことがある(経験がある自信あるし、ここは大丈夫と答えられる)
webのjavascriptをVBAから起動できるのか?
→ 過去、ボタンのコントロールに対して、
.Clickメソッドでやったことあるが
指定した関数をパラメータ付きで起動したことは無い
※技術的にできることを早急に確認する
webのコントロールから作られたウインドウのデータを取得できるか?
→ javascriptでopenされた結果の表示(新規ウインドウ)
からデータを取得可能か and 取得方法を調べる
など、仕様書(やりたいこと) から 予想される問題点を洗い出します。
あとは、その問題点をまず、簡単なテストでつぶします。
つぶしきれなかったら、仕様を変えてもらうなどの処理が必要です。
よくある話ですが、
夢のような仕様なのか、現実的な仕様なのか作成に入る前に判断します。
不安を先送りにすると、ロクナコト無いですよ。
また、よく掲示板で目にする話なのですが、
XXXXはできるのでしょうか?事前調査で知りたい
って書き込みかなぁ。これもアリでしょう。
※実際の問題点やソースを開示しろと言われてる場面も見かけるが。
チョット内容が違うけど、愚痴系のメルマガで、
No.138 アイツが打てたから、オレも打てる。マシンガン打線
http://www.ken3.org/guchi/backno/guchi138.html
なんて書いてます、
実現可能な仕様 や 過去に経験者が居ると安心だよね。
/*
* 5.IE データセット後、JavaScriptを起動する
*/
楽天ブックのリンク作成ページ
http://books.rakuten.co.jp/afvc/afinfo/page03.html
ここで、
ISBN番号 と 自分の広告コードのSIDとPIDを入力してボタンを押すと
ソースが表示される。
ソースを探ると、
form name=parts フォームの名前はpartsかぁ、
input type="text" name="isbn"
input type="text" name="sid"
input type="text" name="pid"
と入力フォームがなっていて、
a href = "JavaScript:parts('A')
a href = "JavaScript:parts('B')
・
・
a href = "JavaScript:parts('F')
a href = "JavaScript:parts('L')
a href = "JavaScript:parts('M')
a href = "JavaScript:parts('S')
とサイズ別にJavaScriptを起動しているみたいです。
そこで、プログラム作成の手順としては、
ExcelUserフォームにISBN,SID,PIDの入力を作成する。
実行ボタンが押されたら、
http://books.rakuten.co.jp/afvc/afinfo/page03.html
へ飛び、表示の終了を待ってから、
Webコントロール上のform name=partsのテキストボックスにデータをセットする。
JavaScript:parts('B')を起動させ広告を表示させる。
※サイズBの広告データを作成します。
テストデータは、
ISBN:4797321296 基礎からのデータベース設計
SID=777777 PID=99999999
をセットして、実行してみます。
サイズBのボタンを探して、.Clickといつもの方法でも良かったのですが、
今回は、JavaScriptの起動方法を探してみました。
IEのJavaScriptの起動方法ですが、
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
? Me.WebBrowser1.Document.scripts(1).scopeName
とか、scriptsがスクリプトオブジェクトだから、
これを.RUNとかないかなぁと探ってみましたが、
目的の処理が見つかりませんでした。
チョット違うかもしれないけど、今回は、
画像がクリックされたらのAタグだったので、
'JavaScriptを起動する(リンクで飛ぶように見せかけるの?)
Me.WebBrowser1.Navigate2 "JavaScript:parts('B')"
とすることで、JavaScriptを起動できたことでした。
なんか意外でした・・・
<a href = "JavaScript:parts('B')">〜
となっているから、それだったら、
.Navigate2 "JavaScript:parts('B')"
でOKなのか?って発想でテストしてみました。
現在、下記↓のサンプルは動作しません・・・情報が古くてスミマセン
Private Sub btnRUN_Click()
Dim time10 As Date
'広告作成ページに飛ぶ
Me.WebBrowser1.Navigate2 "http://books.rakuten.co.jp/afvc/afinfo/page03.html"
'2秒表示を強制的に待つ
time10 = DateAdd("s", 2, Now())
Do While True
DoEvents
If time10 < Now() Then Exit Do
Loop
'表示完了を待つ
While Me.WebBrowser1.Busy = True _
Or Me.WebBrowser1.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
'データをセットする
Me.WebBrowser1.Document.parts.isbn.Value = Me.txtISBN.Text
Me.WebBrowser1.Document.parts.sid.Value = Me.txtSID
Me.WebBrowser1.Document.parts.pid.Value = Me.txtPID
'JavaScriptを起動する(リンクで飛ぶように見せかけるの?)
Me.WebBrowser1.Navigate2 "JavaScript:parts('B')"
End Sub |
こんな感じで、データセット、JavaScriptの起動までいきました。
さてと、次は、開らかれた新規ウインドウから、広告ソースデータをGetしないと。
/*
* 6.終わりの挨拶
*/
http://www.ken3.org/p/o20040515.lzh
に
webdataset.xlsが圧縮されてます。
処理が中途半端ですが、テストしてみてください。
何か読者の心に残れば、うれしいです。
*私の独り言をうまく消化してくださいね。
三流プログラマー Ken3でした。
フィードバック
VBA系の→[掲示板]←を覗く、質問を書き込む
評価・感想
ページフッター(リンクや広告など)
[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます
広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列
書籍の購入
Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??
コンピュータ書籍の発送がハヤイ専門店
コンピュータの本・専門店
|
※種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり
|
amazon.co.jpでキーワード別チェック
下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・