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#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>
> が表示されました。

更に前の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