« MsgBoxの使い方とビジュアル一覧 | トップページ | HTMLファイルを生成 »

2010年4月10日 (土)

簡易メール送信

VBAでメールを送信するには
Outlookを操作してって…
めんどくさいです。

別に長文を送りたいわけではなく、
ただ単に外為をモニタしてるパソコンから
タイミングを知らせるだけのメールでいい場合は
こんなんでいかがでしょうか?

手順は、まずExcelのシートにメールアドレスのリンクを作ります。
それを使ってメールを送ります。

簡易メールなので
メールのタイトルで内容をお知らせして、
本文はなしです。
Sendkeysを使いますので
メールのウィンドウが立ち上がったら
触らないようにしてください。

逆に言えば、ウィンドウが立ち上がっても
違うウィンドウを最前面に出してしまえば
メール送信を妨害できます。

まずは、メールのリンクを作るコードです。

メールのリンクを作るコード:

Sub macro100410a()
'メールリンクを作成する

    'メール用シートの追加
    Call SheetAddDel("mail")
   
    '選択したセルにメールリンクを作成する
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
        "mailto:メールアドレス", TextToDisplay:="メール送信"
       
    '見た目の設定
    With Selection.Font
        .Size = 12
        .Underline = xlUnderlineStyleSingle
        .ColorIndex = 5
    End With
End Sub

実行結果:
Vba20100410a

そして、これを使って送信するコードはこちら

簡易メールを送信するコード:

Sub macro100410b()
'macro100410aで作ったメールのリンクで
'メールを送信する

    With Sheets("mail").Range("A1").Hyperlinks(1)
        'メールの題名を設定
        .EmailSubject = "メールの題名"
       
        'リンクをクリックするのと同等
        .Follow NewWindow:=False, AddHistory:=True
            
        'メールのウィンドウが立ち上がったか確認できない(?)ので
        'とりあえず5秒待って送信
        '送信のショートカットキーが{Alt} + S
        Application.Wait Time:=Now + TimeValue("00:00:05")
        SendKeys "%{s}", True
       
    End With
End Sub

上のコードを実行すると
下のようなウィンドウが立ち上がって
メールを送信します。
Vba20100410b

SendKeyはアクティブなウィンドウに有効ですので、
メールのウィンドウが立ち上がっても
SendKeysで[ファイル]メニューの[メールを送信する]のショートカットキー
Alt + s を送る前に
違うウィンドウをアクティブにすると
そのウィンドウにAlt+sが送られてしまいます。

|

« MsgBoxの使い方とビジュアル一覧 | トップページ | HTMLファイルを生成 »

コメント

ExcelVBA取得に向けて頑張っています!
今後も参考にさせていただきます!

投稿: SEMコンサルタント | 2010年4月18日 (日) 10時26分

コメントありがとうございます。
励みになります。
「ExcelVBA取得」うまくいくといいですね。
ぼちぼち更新していきますので、
また来てやってください。

投稿: 管理人やむえむ | 2010年4月19日 (月) 08時43分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 簡易メール送信:

« MsgBoxの使い方とビジュアル一覧 | トップページ | HTMLファイルを生成 »