仕事で、Outlook2007を使用してます。
ExchangeServerなので、仕方ないのかなと思ってます。
環境さえそろっていれば、意外と使いやすいかなとも思っているので、あきらめもサクッとできてます。
ある時、プライベートでThunderBirdを使ってみたところ、プラグインもあってなんだか、便利なんですよ。
メール作成に、好きなテキストエディタを指定できたり、メール本文をみて添付ファイルの有無を送信前に確認してくれたり。。。
そんな訳で、Outlookにいろいろ気にいらない部分がありますが、マクロがあるのでスキルがあれば、ある程度満足出来るのではとも考えているのですが、問題は自分にスキルがないと言う事。
結局、Google先生に相談しつつ、いろいろな方のマクロを見て勉強しつつTry&Errorを繰り返す事に。
と、いうことでメール作成に好きなテキストエディタを使用できるマクロや、メール送信時に件名や添付ファイルを確認してくれる、マクロです。
とりあえず、好きなテキストエディタでメールを作成できるマクロです。
テキストメールと、HTMLメールで動作をかえてます。。。
ソースを見ながらメールを書くのはメンドーな自分なので、仕方ないです。
下記は、メール作成ウィンドウ(Inspector)から実行できます
Sub RunEditor() Dim objShell As Object Dim objFso As Object Dim strSubject As String Dim strFileName As String Dim strFileBody As String Dim stmFile As Object Set objShell = CreateObject("WScript.Shell") Set objFso = CreateObject("Scripting.FileSystemObject") ' 日時から一時ファイル名を生成 strFileName = objShell.ExpandEnvironmentStrings("%temp%") & Year(Date) & Month(Date) & Day(Date) & Hour(Time) & Minute(Time) & Second(Time) & ".txt" If ActiveInspector.CurrentItem.BodyFormat = 1 Then 'TXTメールの場合の処理 ' 一時ファイルの作成とメッセージの本文の書き出し Set stmFile = objFso.CreateTextFile(strFileName, True) stmFile.WriteLine ActiveInspector.CurrentItem.Body stmFile.Close ' テキストエディタの起動 objShell.Run "[テキストエディタのパス] " & strFileName, , True ' 編集済みの一時ファイルからの読み出し Set stmFile = objFso.OpenTextFile(strFileName, 1, 1) ActiveInspector.CurrentItem.Body = stmFile.ReadAll stmFile.Close Else 'TXTメール以外の場合の処理 MsgBox "Content does not display in HTML email" ' 一時ファイルの作成のみ Set stmFile = objFso.CreateTextFile(strFileName, True) stmFile.Close ' テキストエディタの起動 objShell.Run "[テキストエディタのパス] " & strFileName, , True ' 編集済みの一時ファイルを1行目へ書き出し Set stmFile = objFso.OpenTextFile(strFileName, 1, 1) With ActiveInspector.WordEditor.Windows(1).Selection .HomeKey Unit:=6 .TypeText stmFile.ReadAll End With stmFile.Close End If objFso.DeleteFile strFileName ActiveInspector.Activate End Sub
自分は、サクラエディタを使用しています。
メール作成後、[保存して閉じる]を実行すると、メール作成ウィンドウに内容が反映されます
ただし、最後に[ActiveInspector.Activate]を実行しているのに、メール作成ウィンドウでキーボード操作は受け付けてくれませんでした。。。
この辺は、サクラエディタの仕様かもしれません。。。
次は、メール一覧から実行できるマクロです。
いづれも、上のRunEditorへジャンプさせてます。
新規作成用
Sub NewMail() CreateItem(0).Display RunEditor End Sub
返信用
Sub Reply() ActiveExplorer.Selection.Item(1).Reply.Display RunEditor End Sub
すべてへ返信用
Sub AllReply() ActiveExplorer.Selection.Item(1).ReplyAll.Display RunEditor End Sub
後は、Outlook側でこれらマクロをツールバーにでも登録してやり、ショートカットキーを設定すると、良い感じに、キーボードでマクロを実行できると思います。
ついでに、エディタ側のマクロを使用すると、メール作成も楽になるかもしれませんね。
下記は、件名が空だった場合にメッセージを出すマクロと、メール本文に「添付」と言う文字があり、添付ファイルがない場合にメッセージを出すマクロです。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim strSubject As String Dim strBody As String strSubject = Item.Subject strBody = Item.Body If Len(Trim(strSubject)) = 0 Then Prompt$ = "Subject is Empty. Are you sure you want to send the Mail?" If MsgBox(Prompt$, vbYesNo + vbQuestion + _ vbMsgBoxSetForeground, "Check for Subject") = vbNo Then Cancel = True End If End If If InStr(strSubject & strBody, "添付") > 0 And Item.Attachments.Count = 0 Then Prompt$ = "Attachment file is Empty. Are you sure you want to send the Mail?" If MsgBox(Prompt$, vbYesNo + vbQuestion + _ vbMsgBoxSetForeground, "Check for Attachment file") = vbNo Then Cancel = True End If End If End Sub
参考サイト
- メールの本文を秀丸エディタで表示する[うぃっきうぃき]
- 件名の入れ忘れ防止用マクロを作成(Outlook用)[Lifehacker]
上記以外にも、たくさんのサイト様を参考にさせていただいたました。ありがとうございました。