エクセル・VBA・マクロ・JavaScript・Ajax・GoogleMaps・PHPプログラム CSSを追加

エクセルVBAプログラミングの基礎から応用までプログラミングの解説です。参考図書などは、広告収入で補っています。Excelをもっと使いこなしてもらえるようになったら嬉しいと思っています。
と思っていましたが、これからは2009/6/6からは、今までプログラムを作成する中でどうしても記録に残しておきたいものをメモとして残していきたいと思います。
EXCEL以外に追加したのは、JavaScript、Ajax、GoogleMaps、PHPです。みなさんにも参考になったらこの上ない喜びです。

メニューへ戻る     


UWSCの掲示板
UWSCはこちらにあります
UWSCはこれで勉強しました



UWSCの小技
  U8.ヤフーメールの本文入力


興味深い内容だったので、メモ。


 ヤフーにログインし、「メールの作成」をクリック、
宛先、件名の入力までの記録まではうまくいったのですが、
メールの本文入力が記録できません。

===================================================
// サイト定義
URL = "https://login.yahoo.co.jp"
YahooID = "ID"
Yahooパスワード = "pass"

// ログイン記録送信定義
あて先 = "a@b.com"
件名 = "自動送信"
本文 = "UWSCスクリプトによりログインしました。"

// IEの起動
IE = CreateOLEObj("InternetExplorer.Application")
IE.visible = True
IE.navigate(URL)
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

// ログインページ
IE.Document.all.login.value = YahooID
IE.Document.all.passwd.value = Yahooパスワード
IE.Document.Forms[0].submit()
// WaitWarning( IE ) // 「セキュリティの警告」メッセージボックス処理
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

Ifb Length(あて先) Then
 // トップページ
 IE.Document.all.mailicon.Click()
 REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

 // メールトップページ
 IELINK( IE, "メールの作成", 1 )
 REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

 // 新規メール作成ページ
 IE.Document.all.tofield.value = あて先
 IE.Document.all.subjectfield.value = 件名
 IE.Document.all.bodyfield.value = 本文
 IE.Document.Compose.sendtop.Click()
 REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4
Endif

きったんさんにお教えいただいた以下の方法で入力を試みたのですが、
1つ気になることがわかりました。

IE.Document.all.tofield.value = あて先
IE.Document.all.subjectfield.value = 件名
IE.Document.all.bodyfield.value = 本文

送信ボタンを押す直前でSTOPさせたのですが、以前と同様に宛先、件名のみ入力されており、
本文は入力されていません。

ところが、その画面のソースを見てみると、入力した文字列が表示されているのです。

通常の画面では本文欄には何も表示されていないのですが、ソースで見ると
入力されているのです。

ちなみに●●●●●という文字を入力した場合、以下のようなソースになっています。

<TEXTAREA id=bodyfield style="DISPLAY: none" name=Body>●●●●●</TEXTAREA>

なおこの状態で引き続き送信をしてみたのですが、届いたメールにはやはり
本文は書かれていませんでした。




style="DISPLAY: none"より、(推測ですが)非表示ということは特殊な処理がされているのでしょう。
すがりさんのレスで結論でした。
古い環境しか知らず、いらぬ横槍を入れてしまったようで。

スクリプトを使ったフォームでは値が入っているように見えるのに「入力されていない」と判定されることがあります。
単純にその再現性の違いかと思っていました。
実際試行錯誤で実現したもので、他の似た書き方では入力できなかったりしたので。

ちなみにIE6とFireFox3でbodyfield部分のソースを見ると
<textarea name="Body" id="bodyfield" rows="20" cols="55" wrap="virtual" tabindex="5"> </textarea>
となっているので普通のテキストボックスのように思われますが、その直前にスクリプトがあり、
ブラウザを判定して機能を切り替えているようです。
<script type="text/javascript">
g_bGoodBrowse = false; // Global variable indicating whether or not the user has the browse control installed
g_oBrowse = null; // Global reference to the browse control
</script>

g_bGoodBrowseというのは恐らく最新の機能に対応しているかどうかのフラグでしょう。コメントもついてますが。
IE6とFireFox3は非対応で、IE7は対応しているということなのでしょうね。







メニューへ戻る
inserted by FC2 system