こんにちは!承認しまくりのtknriaです!
役職が上がり、承認の権限を持つようになると、もちろん部下から承認依頼があります。
メールや電話で済む承認もありますが、見積書などに押印する承認もあります。
しかし、それ以外の仕事に追われて、部下から催促があるまで忘れてた!というケースもあるかと思います。
メールベースだと未読にしておかないと忘れるし、未読にしていても埋もれてしまうことがありますよね。
それよりかは、押印すべき書類を先に印刷しておけば、まだ管理しやすいのではないでしょうか。
■ 承認依頼内容を印刷しちゃう!
今回想定しているのは、メールの件名に「承認依頼」の文字が含まれていて、そのメールに添付ファイルがある場合です。
そのメールを受信したときに、その添付ファイルを自動で印刷する、という機能を実装します。
' ----- 以下、ソース -----
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpsz0p As String, ByVal lpszFile As String, _
ByVal lpszParams As String, ByVal lpszDir As String, _
ByVal FsShowCmd As Long) As Long
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim objItem As Variant
Set objItem = Session.GetItemFromID(EntryIDCollection)
If TypeName(objItem) = "MailItem" Then
' ここに、メールを受信したときに行いたい処理を記載
' 添付ファイルを自動印刷
Call PrintAttachments(objItem)
End If
End Sub
Public Sub PrintAttachments(ByVal objMail As MailItem)
Const ATTACH_PATH = "C:\temp_attach\" ' 添付ファイルを保存するフォルダを指定
Const MyAddress = "tknria@okku.com" ' 自分のメールアドレス
Dim objAttach As Attachment
Dim strFileName As String
If InStr(objMail.Subject, "承認依頼") > 0 Then
' 件名に「承認依頼」が入っているかを判定
If objMail.To = MyAddress Then
' 自分宛のメールかどうかを判定
Else
Exit Sub
End If
Else
Exit Sub
End If
If objMail.Attachments.Count > 0 Then
For Each objAttach In objMail.Attachments
' 添付ファイルを指定フォルダに保存
strFileName = ATTACH_PATH & objAttach.FileName
objAttach.SaveAsFile (strFileName)
' 保存したファイルを印刷する
Call ShellExecute(0, "print", strFileName, 0, ATTACH_PATH, 0)
Next
Else
End If
End Sub
' ----- 以上、ソース -----
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpsz0p As String, ByVal lpszFile As String, _
ByVal lpszParams As String, ByVal lpszDir As String, _
ByVal FsShowCmd As Long) As Long
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim objItem As Variant
Set objItem = Session.GetItemFromID(EntryIDCollection)
If TypeName(objItem) = "MailItem" Then
' ここに、メールを受信したときに行いたい処理を記載
' 添付ファイルを自動印刷
Call PrintAttachments(objItem)
End If
End Sub
Public Sub PrintAttachments(ByVal objMail As MailItem)
Const ATTACH_PATH = "C:\temp_attach\" ' 添付ファイルを保存するフォルダを指定
Const MyAddress = "tknria@okku.com" ' 自分のメールアドレス
Dim objAttach As Attachment
Dim strFileName As String
If InStr(objMail.Subject, "承認依頼") > 0 Then
' 件名に「承認依頼」が入っているかを判定
If objMail.To = MyAddress Then
' 自分宛のメールかどうかを判定
Else
Exit Sub
End If
Else
Exit Sub
End If
If objMail.Attachments.Count > 0 Then
For Each objAttach In objMail.Attachments
' 添付ファイルを指定フォルダに保存
strFileName = ATTACH_PATH & objAttach.FileName
objAttach.SaveAsFile (strFileName)
' 保存したファイルを印刷する
Call ShellExecute(0, "print", strFileName, 0, ATTACH_PATH, 0)
Next
Else
End If
End Sub
' ----- 以上、ソース -----
■ 億劫なあとがき
これで、部下から恐る恐る「承認まだでしょうか・・・?」などと急かされることはないはず!
もちろん、会社の規模にもよりますが、そもそもそこまで細分化された承認体制が必要か、というところから見直す必要はありますよね。