IE操作でのメール送信

最近の書き込み件数: 今日 0件、昨日 0件
未読分:45件

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)

更に前の20件を見る


Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

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件を見る
最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降

VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

エクセルVBAでIE制御の応用編

こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。

ExcelのVBAで作成した役立つVBAコード

こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com