IE操作でのメール送信
未読分:45件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#45 2017年1月25日(水)08時59分 From: ジャッカル | 返事 削除 変更 |
エラーになるってことはオブジェクトがしっかり認識していないってことじゃないのかな? ちゃんとieつかめてる? > この教本そのまま起動させると、 > 「 Set htdoc = ie.document」 > の場所でエラーになります。なぜだがわかりますでしょうか? |
Message#44 2017年1月22日(日)13時41分 From: nazo | 返事 削除 変更 |
この教本そのまま起動させると、 「 Set htdoc = ie.document」 の場所でエラーになります。なぜだがわかりますでしょうか? |
Message#43 2015年12月17日(木)13時54分 From: 気ずる | 返事 削除 変更 |
この方法はブラウザ操作からメール送信する方法なんで、添付ファイルをブラウザのセキュリティ上操作はむずかしいでしょうね。 前に提案していたVBAから直接送信させると添付ファイルできたと思いますよ。 hiroyukiのメッセージ(#42)への返事 > yahooメール送信まででき参考になります。 > このプログラムをみて本文も送信しようと試行錯誤してやってみましたが、どうにもうまくいきません。 > > 本文と添付ファイルをつけて送信するにはどうすればよいのでしょうか?ご教授ください。 |
Message#42 2015年12月15日(火)23時09分 From: hiroyuki | 返事 削除 変更 |
yahooメール送信まででき参考になります。 このプログラムをみて本文も送信しようと試行錯誤してやってみましたが、どうにもうまくいきません。 本文と添付ファイルをつけて送信するにはどうすればよいのでしょうか?ご教授ください。 |
Message#41 2015年12月15日(火)23時01分 From: hiroyuki | 返事 削除 変更 |
VBAマスターのメッセージ(#39)への返事 > こちらで試してみてください。 > > > 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 = "xxx" > > '2秒待ち > Call WaitFor(2) > SendKeys "{TAB}" > > '件名入力 > 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 |
Message#40 2015年10月17日(土)09時25分 From: 菊池 幸之介 | 返事 削除 変更 |
VBAマスターのメッセージ(#39)への返事 > こちらで試してみてください。 > > > 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 = "xxx" > > '2秒待ち > Call WaitFor(2) > SendKeys "{TAB}" > > '件名入力 > 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マスターさん、気ずるさん、的確な助言を頂きありがとうございました。 とても勉強になります。 また、解決して頂いて早々ですみませんが サイト上から値を抽出するプログラムの件で新規スレッドを立てさせて頂きますので お力を貸して頂けたら幸いです。 よろしくお願い致します。 |
Message#39 2015年10月17日(土)03時52分 From: VBAマスター | 返事 削除 変更 |
こちらで試してみてください。 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 = "xxx" '2秒待ち Call WaitFor(2) SendKeys "{TAB}" '件名入力 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 |
Message#38 2015年10月16日(金)22時18分 From: 菊池 幸之介 | 返事 削除 変更 |
菊池 幸之介のメッセージ(#37)への返事 > > メアドの前の部分はxxxでいいので、処理しているコードをそのままはりつけてみてください。 メアドの部分は xxx@ezweb.ne.jp です。 よろしくお願いします。 |
Message#37 2015年10月16日(金)22時09分 From: 菊池 幸之介 | 返事 削除 変更 |
> メアドの前の部分はxxxでいいので、処理しているコードをそのままはりつけてみてください。 こちらがソースになります。 よろしくお願いします。 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 = "xxx" '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 |
Message#36 2015年10月16日(金)18時03分 From: VBAマスター | 返事 削除 変更 |
> 携帯のメールアドレスを入力していたのでgmailの方で試してみましたが同じでした。 メアドの前の部分はxxxでいいので、処理しているコードをそのままはりつけてみてください。 |
Message#35 2015年10月16日(金)17時29分 From: 菊池 幸之介 | 返事 削除 変更 |
> 色々なドメインのアドレスをいれても同じですか? 携帯のメールアドレスを入力していたのでgmailの方で試してみましたが同じでした。 |
Message#34 2015年10月16日(金)14時17分 From: VBAマスター | 返事 削除 変更 |
菊池 幸之介のメッセージ(#32)への返事 > > ということは宛名入力部分が問題ですね。 > > 自動入力したあとに、msgBox ie.document.getElementById("to-field").Valueで > > データが入力されているか確認してみてください。 > > 入力したデータが取得できれば問題ないということですが、それでも無理な場合は、 > > ちょっと原因が分からないですね。 > > > msgBox ie.document.getElementById("to-field").Valueで確認しましたところ、 > 正しい宛名がmsgboxに表示されましたがはやり送信はできないようです。 色々なドメインのアドレスをいれても同じですか? |
Message#33 2015年10月16日(金)10時44分 From: 菊池 幸之介 | 返事 削除 変更 |
> あと、問題があるとするとIEのバージョンかな > バージョン10にするなどバージョンを変更してうまくいくかもしれない。 IEバージョン10にしましたがサイト上で互換性のメッセージが出てきました。 |
Message#32 2015年10月16日(金)10時42分 From: 菊池 幸之介 | 返事 削除 変更 |
> ということは宛名入力部分が問題ですね。 > 自動入力したあとに、msgBox ie.document.getElementById("to-field").Valueで > データが入力されているか確認してみてください。 > 入力したデータが取得できれば問題ないということですが、それでも無理な場合は、 > ちょっと原因が分からないですね。 msgBox ie.document.getElementById("to-field").Valueで確認しましたところ、 正しい宛名がmsgboxに表示されましたがはやり送信はできないようです。 |
Message#31 2015年10月15日(木)20時21分 From: 気ずる | 返事 削除 変更 |
> Excelのバージョンは32bitでした。 あと、問題があるとするとIEのバージョンかな バージョン10にするなどバージョンを変更してうまくいくかもしれない。 |
Message#30 2015年10月15日(木)17時58分 From: VBAマスター | 返事 削除 変更 |
> @宛名自動入力、送信手動クリック > →できませんでした。 > > A宛名手動入力、送信自動クリック > →できました。 > > 送信ボタンの自動クリックはできていました! > 宛名自動入力に問題があるのでしょうか。 ということは宛名入力部分が問題ですね。 自動入力したあとに、msgBox ie.document.getElementById("to-field").Valueで データが入力されているか確認してみてください。 入力したデータが取得できれば問題ないということですが、それでも無理な場合は、 ちょっと原因が分からないですね。 |
Message#29 2015年10月15日(木)16時14分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#27)への返事 > 環境は問題ないように思えるけど、エクセルは64ビット版使ってます? > 64ビット版は不具合が多いので、可能であれば32ビット版に変更したほうがいいですよ。 Excelのバージョンは32bitでした。 |
Message#28 2015年10月15日(木)16時07分 From: 菊池 幸之介 | 返事 削除 変更 |
VBAマスターのメッセージ(#26)への返事 > まずは、宛名入力が原因なのか、送信クリックが原因なのか分ける必要があるので、 > > @宛名自動入力、送信手動クリック > A宛名手動入力、送信自動クリック > > でどちらができないのか確認してみてください。 @宛名自動入力、送信手動クリック →できませんでした。 A宛名手動入力、送信自動クリック →できました。 送信ボタンの自動クリックはできていました! 宛名自動入力に問題があるのでしょうか。 |
Message#27 2015年10月15日(木)11時15分 From: 気ずる | 返事 削除 変更 |
> 他のメールアドレスでも同じメッセージが出ました。 > > OSはWindows7、IEバージョンは11、Excelは2013です。 環境は問題ないように思えるけど、エクセルは64ビット版使ってます? 64ビット版は不具合が多いので、可能であれば32ビット版に変更したほうがいいですよ。 |
Message#26 2015年10月15日(木)06時48分 From: VBAマスター | 返事 削除 変更 |
まずは、宛名入力が原因なのか、送信クリックが原因なのか分ける必要があるので、 @宛名自動入力、送信手動クリック A宛名手動入力、送信自動クリック でどちらができないのか確認してみてください。 菊池 幸之介のメッセージ(#19)への返事 > 気ずるのメッセージ(#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#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タグを包括しているけど、たまにクリックできないサイトもある。 |
Message#5 2015年10月13日(火)09時36分 From: 菊池 幸之介 | 返事 削除 変更 |
気ずるのメッセージ(#4)への返事 ありがとうございます。 この書き方だと実際にクリックしているのはspanタグなのですね。 aタグをクリックするやり方がわからないのですがもしお分かりでしたら教えて頂けますでしょうか。 > > > > ie.document.getElementById("main-btn-new").Click > > これ実際にクリックしているのはspanタグだからちゃんとaタグをクリックするようにしたらいけるんじゃない? > > spanタグはaタグを包括しているけど、たまにクリックできないサイトもある。 |
Message#4 2015年10月12日(月)23時05分 From: 気ずる | 返事 削除 変更 |
> > > ie.document.getElementById("main-btn-new").Click これ実際にクリックしているのはspanタグだからちゃんとaタグをクリックするようにしたらいけるんじゃない? spanタグはaタグを包括しているけど、たまにクリックできないサイトもある。 |
Message#3 2015年10月12日(月)22時12分 From: 菊池 幸之介 | 返事 削除 変更 |
ジャッカルのメッセージ(#2)への返事 はい、 ie.document.getElementById("main-btn-new")(0).Click ですとエラーがでて、 ie.document.getElementById("main-btn-new").Click に変更したところエラーはでず、反応なしでした。 > 他の人わけがわからないかもしれませんが、 > > > > ie.document.getElementById("main-btn-new")(0).Click > > をie.document.getElementById("main-btn-new").Click > > にしてもだめでした? > > > IE操作をして > > ・yahooのメール画面へ行く > > ・「メールの作成」をクリック > > ・「to」、「件名」を入力 > > ・「送信」をクリック > > ということをしたいのですが、 > > > > 下記のコードで「メールの作成」をクリックしたいのですが > > ie.document.getElementById("main-btn-new").Click > > で反応がない状態です。 > > > > お分かりになる方、お教えいただけますでしょうか。 > > > > Sub yahoo() > > Dim ie As InternetExplorer > > Dim i As Long > > > > Set ie = CreateObject("internetExplorer.Application") > > ie.Visible = True > > ie.navigate > > 'yahooメールの画面 > > "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) > > > > ie.document.getElementById("main-btn-new").Click > > > > > > End Sub > > > > > > '指定した秒だけ停止する関数 > > Sub WaitFor(ByVal second As Integer) > > Dim futureTime As Date > > > > futureTime = DateAdd("s", second, Now) > > While Now < futureTime > > DoEvents > > Wend > > End Sub |
Message#2 2015年10月12日(月)20時22分 From: ジャッカル | 返事 削除 変更 |
他の人わけがわからないかもしれませんが、 > > ie.document.getElementById("main-btn-new")(0).Click をie.document.getElementById("main-btn-new").Click にしてもだめでした? > IE操作をして > ・yahooのメール画面へ行く > ・「メールの作成」をクリック > ・「to」、「件名」を入力 > ・「送信」をクリック > ということをしたいのですが、 > > 下記のコードで「メールの作成」をクリックしたいのですが > ie.document.getElementById("main-btn-new").Click > で反応がない状態です。 > > お分かりになる方、お教えいただけますでしょうか。 > > Sub yahoo() > Dim ie As InternetExplorer > Dim i As Long > > Set ie = CreateObject("internetExplorer.Application") > ie.Visible = True > ie.navigate > 'yahooメールの画面 > "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) > > ie.document.getElementById("main-btn-new").Click > > > End Sub > > > '指定した秒だけ停止する関数 > Sub WaitFor(ByVal second As Integer) > Dim futureTime As Date > > futureTime = DateAdd("s", second, Now) > While Now < futureTime > DoEvents > Wend > End Sub |
Message#1 2015年10月12日(月)18時22分 From: 菊池 幸之介 | 返事 削除 変更 |
IE操作をして ・yahooのメール画面へ行く ・「メールの作成」をクリック ・「to」、「件名」を入力 ・「送信」をクリック ということをしたいのですが、 下記のコードで「メールの作成」をクリックしたいのですが ie.document.getElementById("main-btn-new").Click で反応がない状態です。 お分かりになる方、お教えいただけますでしょうか。 Sub yahoo() Dim ie As InternetExplorer Dim i As Long Set ie = CreateObject("internetExplorer.Application") ie.Visible = True ie.navigate 'yahooメールの画面 "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) ie.document.getElementById("main-btn-new").Click End Sub '指定した秒だけ停止する関数 Sub WaitFor(ByVal second As Integer) Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Sub |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降