トップ «前の日記(2015-07-27(Mon)) 最新 次の日記(2015-08-01(Sat))» 編集

K2さんの雑記


2015-07-30(Thu) [長年日記]

Outlook2013で、メール作成時にエディタで本文を編集するマクロ

Outlookは、メール閲覧・作成に関しては、等幅フォントをサポートしているようで、この点は何とか耐えうる。

しかしながら、メール作成時に自動改行的な機能は持っていないので、Becky!に慣れていた私としては、手動で改行を入れていたが、我慢ならなくなった。

で、本文をテンポラリファイルに出力し、外部エディタを起動・編集、外部エディタを終了したら、Outlookの編集画面に編集されたテンポラリファイルを読み込むというマクロを作成した。一応動いているようだ。

'===========================================================
' その他定義
'===========================================================
Option Explicit
Private Declare Function OpenProcess Lib "kernel32" _
    (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
     ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
    (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
    (ByVal hObject As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400&
Private Const STILL_ACTIVE = &H103&

'-----------------------------------------------------------
'  ProcessIDのプロセスが終了するまで待つ
'-----------------------------------------------------------
Private Sub ShellEnd(ProcessID As Long, DoProcessMessages As Boolean)
    Dim hProcess As Long
    Dim EndCode As Long
    Dim EndRet   As Long
    'ハンドルを取得する
     hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, ProcessID)
    '終わるまで待つ
    Do
        EndRet = GetExitCodeProcess(hProcess, EndCode)
        If DoProcessMessages Then
            DoEvents
        End If
    Loop While (EndCode = STILL_ACTIVE)
    'ハンドルを閉じる
     EndRet = CloseHandle(hProcess)
End Sub

'===========================================================
'  現在のインスペクターの本文をエディタで編集し、
'  インスペクターで編集文書を読み込む
'                               2015/7/30 by K2
'===========================================================
Public Sub InspectorBodyEdit()
    Dim FileName As String
    Dim EditorFileName As String
    Dim S, SBuf As String
    Dim Ret1 As Long

    '適当なテンポラリファイル名
    FileName = "C:\OutlookMailTemp.txt"
    '開くエディタ名
    EditorFileName = "C:\Tools\K2Editor\K2Editor.exe"
    Open FileName For Output As #1
    Print #1, ActiveInspector.CurrentItem.Body
    Close #1
    'エディタ起動
    Ret1 = Shell(EditorFileName & " " & FileName, 1)
    'エディタが終了するまで待機
    ShellEnd Ret1, True
    S = ""
    If Dir(FileName) <> "" Then
        ' テンポラリファイルを開いてテキストを得る
        Open FileName For Input As #1
        Do Until EOF(1)
            Line Input #1, SBuf
            S = S & SBuf & vbCr & vbLf
        Loop
        Close #1
        'インスペクターに本文を入力
        ActiveInspector.CurrentItem.Body = S
    End If
    'インスペクターにフォーカスを当てる
    ActiveInspector.Activate
End Sub

1965|09|
2002|09|10|11|12|
2003|01|02|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|08|
2014|01|02|03|04|05|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|11|
2017|01|03|05|06|07|08|10|11|12|
2018|01|02|03|04|05|08|09|10|12|
2020|01|07|




2015年
7月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
/ / /
最近の日記