世界各国の一部空港ラウンジを無料で使用することのできるプライオリティパスを安くゲットするために楽天プレミアムカード会員になっているが、楽天会員になっていると毎日膨大なダイレクト宣伝メールが送付されてくる。メールを受け取らない設定にしておけば良いのだが、メールの一部に”クリックすると1ポイント”が貰えるものがあるので、”仕方なく”メール受信を選択している。
なにしろ道端に1円玉が落ちていれば間違いなく拾う性分なので、このクリックするだけで1ポイント(1円相当)は非常に魅力的なのだが・・・
さて、メールに添付されているこのバナーをクリックすると1ヶ月後?くらいにある期間まとめてポイントが授与される。キャンペーン期間中にお1人様1回限り!となっているが、何種類かあるようで、期間も数日間あり、いつどのカテゴリーのバナーをクリックしたかなどを記憶しておくのは不可能なので、毎日10数通、そして2人分に来る多分30通くらいのメールのバナーを毎日クリックし、開いたウインドーを消し、そのメールを消去すると言う作業をしているが、この単純作業が結構なストレスで、その対価は多分1ヶ月でも100ポイント行かないくらいなので、何とか省力化しようと思い、エクセルのVBAを使って自動的にインターネットエクスプローラーのメールサイトにアクセスして該当メールを選んでその中のバナーをクリックするマクロを作成している。
その初っ端でヤフーメールのサイトを表示した後、最初のメールをVBAでクリックする処理が出来なくて苦しんでいる。調査、検索、各種手段のトライでほぼまる一日以上費やしたがVBAの処理では出来なかったので、Yahooの知恵袋に投稿して上級者の助けを借りようとしたが、今の所回答なし・・・閲覧数も少ないが。
もしわかる方がいたら是非教えていただきたい。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14228487264
以下 投稿文。
YahooメールをVBAで自動処理しようと考えています。
Sub yahooMail()
Dim iE As Object
Const url As String = "https://jp.mg5.mail.yahoo.co.jp/"
Set iE = CreateObject("internetexplorer.application")
iE.Visible = True
iE.Navigate url
Do While iE.ReadyState <> 4
Loop
iE.Visible = True
iE.Document.getElementsByTagName("input")(10).Checked = True ’動作する。
iE.Document.getElementsByTagName("input")(10).Click ’動作確認できない
iE.Document.getElementsByTagName("input")(10).FireEvent ("onclick") ’動作しない。
iE.Document.getElementsByTagName("a")(17).Click ’機能するが、メニューがグレイアウト
End Sub
上記のプログラムで最初のメールのチェックボックスにチェックを入れて、メニューバーの”操作”、”開く”でメール表示をしようとしましたが、チェックはできるのですが、メールが青色に反転せず、操作で開いたメニューもグレイアウトして使えません。
iE.Document.parentWindow.execScript も実際の関数を発見することができず、使えませんでした。
解決方法がわかる方、是非ご教示ください。
上の方法で無くても、VBAでメールを自動的に開く方法があればそれでも結構です。
よろしくおねがいします。
以上 投稿文。
投稿して4日経つが回答が付かないので、あまり使いたくは無いのだが、仕方なくmouse_eventを使うことになってしまった。
Declare Sub mouse_event Lib "User32" ( _
ByVal dwFlags As Long, _
Optional ByVal dx As Long, _
Optional ByVal dy As Long, _
Optional ByVal dwDate As Long, _
Optional ByVal dwExtraInfo As Long)
Public Declare Sub SLEEP Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
Declare Function SetCursorPos Lib "User32" (ByVal x As Long, ByVal y As Long) As Long
Const MOUSE_LEFTDOWN = &H2 '10進数の2
Const MOUSE_LEFTUP = &H4 '10進数の4
Const MOUSE_RIGHTDOWN = &H8 '10進数の8
Const MOUSE_RIGHTUP = &H10 '10進数の16
Type coordinate
x As Long
y As Long
End Type
Declare Function GetCursorPos Lib "User32" (lpPoint As coordinate) As Long
Sub マウスで画面の任意の位置をクリック()
SetCursorPos 450, 361
SLEEP 2000
mouse_event MOUSE_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSE_LEFTUP, 0, 0, 0, 0
End Sub