仕事で、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]
上記以外にも、たくさんのサイト様を参考にさせていただいたました。ありがとうございました。