IE操作でのメール送信
未読分:45件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#25 2015年10月14日(水)22時23分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#24)への返事 > > 「To:欄にあて先を入力してください。」というメッセージはあて先に何も入力しないで送信しようとすると出るようです。 > > 確かに何もいれないと同じメッセージがでますね。 > Toにたしかにメアドが自動入力されているんですよね? > 別のメアドを入れても同じですか? > > こっちでやるとやはりうまくいくので環境のせいかもしれません。 > OS,IE、エクセルのバージョン何利用してます? 他のメールアドレスでも同じメッセージが出ました。 OSはWindows7、IEバージョンは11、Excelは2013です。 |
Message#24 2015年10月14日(水)21時32分 From: 気ずる | 返事 削除 変更 |
> 「To:欄にあて先を入力してください。」というメッセージはあて先に何も入力しないで送信しようとすると出るようです。 確かに何もいれないと同じメッセージがでますね。 Toにたしかにメアドが自動入力されているんですよね? 別のメアドを入れても同じですか? こっちでやるとやはりうまくいくので環境のせいかもしれません。 OS,IE、エクセルのバージョン何利用してます? |
Message#23 2015年10月14日(水)20時41分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#22)への返事 > > 処理間隔を空けてみましたが同じく「To:欄にあて先を入力してください。」と出ました。 > > ie.document.getElementById("to-field").Value = "宛先" > > のあて先にちゃんとしたアドレス入力しましたか? > もしかしたらメアドチェックしていてメアドじゃないやつはそのようなメッセージがでるのかもしれないですね。 はい、あて先には正しいものを入れました。 もしあて先に正しくないものを入れて送信ボタンを押したとしますと、 「有効なメールアドレスではありません。正しい形式のメールアドレス(例:yahootaro@yahoo.co.jp)か、Yahoo!アドレスブックに登録している愛称を使用してください。」 というメッセージが出ます。 「To:欄にあて先を入力してください。」というメッセージはあて先に何も入力しないで送信しようとすると出るようです。 あて先には正しいものが入力されているのですがサイト上では何も入力されていないという判定になっているのでしょうか。 |
Message#22 2015年10月14日(水)19時52分 From: 気ずる | 返事 削除 変更 |
> 処理間隔を空けてみましたが同じく「To:欄にあて先を入力してください。」と出ました。 ie.document.getElementById("to-field").Value = "宛先" のあて先にちゃんとしたアドレス入力しましたか? もしかしたらメアドチェックしていてメアドじゃないやつはそのようなメッセージがでるのかもしれないですね。 |
Message#21 2015年10月14日(水)18時42分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#20)への返事 > > for eachのexit forを消して実行してみましたところ、1つ目のmsgboxで、 > > <a title="メールを送信 [Ctrl+Enter]" role="button" href="/app/minty/sendconfirm">送信</a> > > が表示され、2つ目のmsgboxで、 > > <a tabindex="-1" title="送信済みメールフォルダー内のメール数:0件" class="rapid-noclick-resp" role="option" href="#" data-action="navigate" data-ylk="sec:fol_list" data-sec="fol_lst" data-rapid_p="5"><i>送信済みメール</i></a> > > が表示されました。 > > ということは、1つ目のリンクはおそらく送信ボタンでしょうってことで記述してあるやつコピペしてやってみたらうまく送信されましたよ。 > > 処理間隔をもう少し長くしたらどうですか? 処理間隔を空けてみましたが同じく「To:欄にあて先を入力してください。」と出ました。 気ずるさんはできたということは私のPCの設定の問題なのでしょうか。。 |
Message#20 2015年10月14日(水)16時48分 From: 気ずる | 返事 削除 変更 |
> for eachのexit forを消して実行してみましたところ、1つ目のmsgboxで、 > <a title="メールを送信 [Ctrl+Enter]" role="button" href="/app/minty/sendconfirm">送信</a> > が表示され、2つ目のmsgboxで、 > <a tabindex="-1" title="送信済みメールフォルダー内のメール数:0件" class="rapid-noclick-resp" role="option" href="#" data-action="navigate" data-ylk="sec:fol_list" data-sec="fol_lst" data-rapid_p="5"><i>送信済みメール</i></a> > が表示されました。 ということは、1つ目のリンクはおそらく送信ボタンでしょうってことで記述してあるやつコピペしてやってみたらうまく送信されましたよ。 処理間隔をもう少し長くしたらどうですか? |
Message#19 2015年10月14日(水)15時44分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#18)への返事 > 「<a href="/app/minty/sendconfirm" title="メールを送信 [Ctrl+Enter]" role="button" id="yui_3_2_0_1_14446958245284057">送信</a>」のid部分が抜けているから一緒かまでは判断できないかも。 > for eachのexit forを消して他にも同じ条件のリンクがないか確認してみたらどうですか? for eachのexit forを消して実行してみましたところ、1つ目のmsgboxで、 <a title="メールを送信 [Ctrl+Enter]" role="button" href="/app/minty/sendconfirm">送信</a> が表示され、2つ目のmsgboxで、 <a tabindex="-1" title="送信済みメールフォルダー内のメール数:0件" class="rapid-noclick-resp" role="option" href="#" data-action="navigate" data-ylk="sec:fol_list" data-sec="fol_lst" data-rapid_p="5"><i>送信済みメール</i></a> が表示されました。 |
Message#18 2015年10月14日(水)13時57分 From: 気ずる | 返事 削除 変更 |
菊池 幸之介のメッセージ(#17)への返事 > 気ずるのメッセージ(#16)への返事 > > すみません > msgbox objLink.outerHTML でメッセージ表示させたところ、 > <a title="メールを送信 [Ctrl+Enter]" role="button"href="/app/minty/sendconrirm">送信</a> > と出ました。 「<a href="/app/minty/sendconfirm" title="メールを送信 [Ctrl+Enter]" role="button" id="yui_3_2_0_1_14446958245284057">送信</a>」のid部分が抜けているから一緒かまでは判断できないかも。 for eachのexit forを消して他にも同じ条件のリンクがないか確認してみたらどうですか? |
Message#17 2015年10月14日(水)12時36分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#16)への返事 すみません msgbox objLink.outerHTML でメッセージ表示させたところ、 <a title="メールを送信 [Ctrl+Enter]" role="button"href="/app/minty/sendconrirm">送信</a> と出ました。 送信ボタンの要素は取れているということでしょうか。 > 質問の答えがちょっとずれてるような気がする。 > > 多分、VBAマスターさんは、msgbox objLink.outerHTML なんかで中身を確認してみて、 > ちゃんと「<a href="/app/minty/sendconfirm" title="メールを送信 [Ctrl+Enter]" role="button" id="yui_3_2_0_1_14446958245284057">送信</a>」の部分なのか確認してみろっていってるんじゃないかい? > いくらソースを見てもオブジェクトが違う要素を取得していたら送信ボタンは押されていないことになる。 |
Message#16 2015年10月14日(水)08時27分 From: 気ずる | 返事 削除 変更 |
質問の答えがちょっとずれてるような気がする。 多分、VBAマスターさんは、msgbox objLink.outerHTML なんかで中身を確認してみて、 ちゃんと「<a href="/app/minty/sendconfirm" title="メールを送信 [Ctrl+Enter]" role="button" id="yui_3_2_0_1_14446958245284057">送信</a>」の部分なのか確認してみろっていってるんじゃないかい? いくらソースを見てもオブジェクトが違う要素を取得していたら送信ボタンは押されていないことになる。 |
Message#15 2015年10月14日(水)02時07分 From: 菊池 幸之介 | 返事 削除 変更 |
VBAマスターのメッセージ(#14)への返事 送信ボタンのobjLink.outerHTMLですが「送信」キーワードでソースを検索してもなく、それらしい要素もないようです。 「送信」ボタンは「メールの作成」ボタンの隣にあるのですがソース上だと抜けているようです。 ボタンを図で表しますと、このような感じです。 メール作成-------送信--下書きを保存--署名--キャンセル ↑ハイフンはスペース ボタンは「メール作成」、「送信」、「下書きを保存」、「署名」、「キャンセル」があり 「メール作成」はソース上にあり、「送信」、「下書きを保存」、「署名」、「キャンセル」は検索したのですがソース上にないようです。 「送信済メール」をクリックしてみたところ通常通りクリックできましたので「送信済メール」の要素で間違いないようです。 > > ページのソースを探しても「送信」ボタンのようなところが見つかりませんでした。 > > 「送信済みメール」の文言はありました。 > > objLink.outerHTMLはどのような値でしたか? > > 「送信」ボタンと同じ値か確認してみてください。 > > 要素検証とページソースは必ずしも完全一致ではありません。 |
Message#14 2015年10月14日(水)00時56分 From: VBAマスター | 返事 削除 変更 |
> ページのソースを探しても「送信」ボタンのようなところが見つかりませんでした。 > 「送信済みメール」の文言はありました。 objLink.outerHTMLはどのような値でしたか? 「送信」ボタンと同じ値か確認してみてください。 要素検証とページソースは必ずしも完全一致ではありません。 |
Message#13 2015年10月13日(火)17時30分 From: 菊池 幸之介 | 返事 削除 変更 |
VBAマスターのメッセージ(#12)への返事 Crhomeで「送信」ボタンの要素検証をすると <a href="/app/minty/sendconfirm" title="メールを送信 [Ctrl+Enter]" role="button" id="yui_3_2_0_1_14446958245284057">送信</a> となっているのですが ページのソースを探しても「送信」ボタンのようなところが見つかりませんでした。 「送信済みメール」の文言はありました。 要素検証とページのソースは違うのでしょうか。 > > '送信クリック > > For Each objLink In ie.document.Links > > If InStr(objLink.outerHTML, "送信") > 0 Then > > objLink.click > > Exit For > > End If > > Next > > objLink.outerHTMLの中身を見て「送信」リンクの部分なのか確認してみてください。 > 他の場所に「送信」の文言があれば最初に出現したリンクをクリックします。 |
Message#12 2015年10月13日(火)16時59分 From: VBAマスター | 返事 削除 変更 |
> '送信クリック > For Each objLink In ie.document.Links > If InStr(objLink.outerHTML, "送信") > 0 Then > objLink.click > Exit For > End If > Next objLink.outerHTMLの中身を見て「送信」リンクの部分なのか確認してみてください。 他の場所に「送信」の文言があれば最初に出現したリンクをクリックします。 |
Message#11 2015年10月13日(火)16時39分 From: 菊池 幸之介 | 返事 削除 変更 |
菊池 幸之介のメッセージ(#10)への返事 yahooメール画面へ行き、メールの作成をクリック、宛先入力、件名入力まで行い、最後に送信をクリックしているつもりなのですが、メール上のメッセージで「To:欄にあて先を入力してください。」と出ます。 ちなみにあて先は入力している状態で出ます。 手動で「送信」をクリックしてみると通常通り送信出来そうです。 クリックしている場所が違うのでしょうか。 回答のほど、よろしくお願いします。 コードはこちらです。 Sub yahoo() Dim ie As InternetExplorer Set ie = CreateObject("internetExplorer.Application") ie.Visible = True ie.navigate "https://jp.mg5.mail.yahoo.co.jp/neo/launch?.rand=64q38e8rjip34#tb=w8o0z9sc" Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE DoEvents Loop '2秒待ち Call WaitFor(2) 'メールの作成クリック For Each objLink In ie.document.Links If InStr(objLink.outerHTML, "メールの作成") > 0 Then objLink.click Exit For End If Next '2秒待ち Call WaitFor(2) '宛先入力 ie.document.getElementById("to-field").Value = "宛先" '2秒待ち Call WaitFor(2) '件名入力 ie.document.getElementById("subject-field").Value = "件名" '2秒待ち Call WaitFor(2) '送信クリック For Each objLink In ie.document.Links If InStr(objLink.outerHTML, "送信") > 0 Then objLink.click Exit For End If Next End Sub '指定した秒だけ停止する関数 Sub WaitFor(ByVal second As Integer) Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Sub > VBAマスターのメッセージ(#8)への返事 > > VBAマスターさんのやり方でできました!感動です! > ありがとうございます。 > > 完成形を載せておきます。 > Sub yahoo() > Dim ie As InternetExplorer > Dim i As Long > > Set ie = CreateObject("internetExplorer.Application") > ie.Visible = True > ie.navigate "https://jp.mg5.mail.yahoo.co.jp/neo/launch?.rand=64q38e8rjip34#tb=w8o0z9sc" > Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE > DoEvents > Loop > > Call WaitFor(2) > > For Each objLink In ie.document.Links > > If InStr(objLink.outerHTML, "メールの作成") > 0 Then > > objLink.Click > > Exit For > > End If > > Next > > > End Sub > > > '指定した秒だけ停止する関数 > Sub WaitFor(ByVal second As Integer) > Dim futureTime As Date > > futureTime = DateAdd("s", second, Now) > While Now < futureTime > DoEvents > Wend > End Sub > > > > > aタグをクリックするやり方がわからないのですがもしお分かりでしたら教えて頂けますでしょうか。 > > > > aタグに限らず、InStr関数で位置情報を取得し、位置が確認できたオブジェクトに対して処理をするというのが一般的な処理になります。 > > > > > > For Each objLink In objIE.document.Links > > > > If InStr(objLink.outerHTML, "メールの作成") > 0 Then > > > > objLink.Click > > > > Call ieCheck(objIE) > > > > Exit For > > > > End If > > > > Next |
Message#10 2015年10月13日(火)15時12分 From: 菊池 幸之介 | 返事 削除 変更 |
VBAマスターのメッセージ(#8)への返事 VBAマスターさんのやり方でできました!感動です! ありがとうございます。 完成形を載せておきます。 Sub yahoo() Dim ie As InternetExplorer Dim i As Long Set ie = CreateObject("internetExplorer.Application") ie.Visible = True ie.navigate "https://jp.mg5.mail.yahoo.co.jp/neo/launch?.rand=64q38e8rjip34#tb=w8o0z9sc" Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE DoEvents Loop Call WaitFor(2) For Each objLink In ie.document.Links If InStr(objLink.outerHTML, "メールの作成") > 0 Then objLink.Click Exit For End If Next End Sub '指定した秒だけ停止する関数 Sub WaitFor(ByVal second As Integer) Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Sub > > aタグをクリックするやり方がわからないのですがもしお分かりでしたら教えて頂けますでしょうか。 > > aタグに限らず、InStr関数で位置情報を取得し、位置が確認できたオブジェクトに対して処理をするというのが一般的な処理になります。 > > > For Each objLink In objIE.document.Links > > If InStr(objLink.outerHTML, "メールの作成") > 0 Then > > objLink.Click > > Call ieCheck(objIE) > > Exit For > > End If > > Next |
Message#9 2015年10月13日(火)14時46分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#6)への返事 ありがとうございます。 調べてやってみようと思います。 > うーん、aタグのクリックの仕方も分からなかったらその後の処理も多分難しいんじゃないですかね。 > > getElementByIdの使い方も間違っていたようですし。 > > とりあえずaタグの処理は↓で説明しているので、こっちを最初に理解した方が後の作業の近道ですよ。 > > http://www.vba-ie.net/element/linkclick.html > > > > ありがとうございます。 > > この書き方だと実際にクリックしているのはspanタグなのですね。 > > > > aタグをクリックするやり方がわからないのですがもしお分かりでしたら教えて頂けますでしょうか。 > > > > > > > > ie.document.getElementById("main-btn-new").Click > > > > > > これ実際にクリックしているのはspanタグだからちゃんとaタグをクリックするようにしたらいけるんじゃない? > > > > > > spanタグはaタグを包括しているけど、たまにクリックできないサイトもある。 |
Message#8 2015年10月13日(火)14時35分 From: VBAマスター | 返事 削除 変更 |
> aタグをクリックするやり方がわからないのですがもしお分かりでしたら教えて頂けますでしょうか。 aタグに限らず、InStr関数で位置情報を取得し、位置が確認できたオブジェクトに対して処理をするというのが一般的な処理になります。 For Each objLink In objIE.document.Links If InStr(objLink.outerHTML, "メールの作成") > 0 Then objLink.Click Call ieCheck(objIE) Exit For End If Next |
Message#7 2015年10月13日(火)10時15分 From: 気ずる | 返事 削除 変更 |
あと、メール送信ならわざわざブラウザ操作するよりVBAでメール送信したほうが早い気がするんで、そちらを模索したほうがいいと思いますよ。 |
Message#6 2015年10月13日(火)10時13分 From: 気ずる | 返事 削除 変更 |
うーん、aタグのクリックの仕方も分からなかったらその後の処理も多分難しいんじゃないですかね。 getElementByIdの使い方も間違っていたようですし。 とりあえずaタグの処理は↓で説明しているので、こっちを最初に理解した方が後の作業の近道ですよ。 http://www.vba-ie.net/element/linkclick.html > ありがとうございます。 > この書き方だと実際にクリックしているのはspanタグなのですね。 > > aタグをクリックするやり方がわからないのですがもしお分かりでしたら教えて頂けますでしょうか。 > > > > > > ie.document.getElementById("main-btn-new").Click > > > > これ実際にクリックしているのはspanタグだからちゃんとaタグをクリックするようにしたらいけるんじゃない? > > > > spanタグはaタグを包括しているけど、たまにクリックできないサイトもある。 |
更に前の20件を見る
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降