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|
|
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
な/
す/
ひ/
最近の日記
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||