質問
2016年3月4日金曜日 6:11
Outlook2013を使っています。仕分けルールで特定アドレスからのメールを印刷していますが、名前、差出人、送信日時、宛先、件名を除き、本文のみ自動印刷する方法を探しております。マイクロソフト・コミュニティへ質問したところマクロで実現の可能性ありとの返信があり、マクロで受信メールの自動印刷は成功したものの、名前、差出人、送信日時、宛先、件名を除く方法がわかりません。ご教示いただけますと幸いです。よろしくお願い致します。
すべての返信 (6)
2016年3月5日土曜日 8:57 ✅回答済み
少々強引な方法ですが、名前も除いた純粋な本文のみ自動印刷が出来ました。trapemiya様のアドバイスを大いに参考にさせていただきました。ありがとうございました。
Sub printemail(Item As Outlook.MailItem) 'had to do it this way to get it working as a script.
Dim oApp As Outlook.Application
Dim oSpace As Outlook.NameSpace
Dim oTempMail As Outlook.MailItem
Dim oFold As Outlook.MAPIFolder
Dim oInBox As Outlook.MAPIFolder
Set oApp = Application
Set oSpace = oApp.GetNamespace("MAPI")
Set oInBox = oSpace.GetDefaultFolder(olFolderInbox)
Set oTempMail = oApp.ActiveExplorer.CurrentFolder.Items.Add(olMailItem) ' Get body only
oTempMail.BodyFormat = Item.BodyFormat
oTempMail.Body = Item.Body
'oTempMail.PrintOut
oTempMail.SaveAs "C:\strname.txt", olTXT
Shell "notepad /p c:\strname.txt"
oTempMail.Delete
Item.UnRead = False
Set Item = Nothing
Set oTempMail = Nothing
Set oInBox = Nothing
Set oSpace = Nothing
Set oApp = Nothing
End Sub
2016年3月7日月曜日 6:15 ✅回答済み
こんにちは。
もう解決された後のようですが、Wordがインストールされているのであれば、WordEditorプロパティから本文を取得後、Word経由で印刷することができるかと思います。
Public Sub PrintMailBody(Item As Outlook.MailItem)
Const wdDoNotSaveChanges = 0
With CreateObject("Word.Application")
.Visible = False
With .Documents.Add
Item.GetInspector.WordEditor.Range.Copy
.Range.Paste
.PrintOut False
.Close wdDoNotSaveChanges
End With
.Quit wdDoNotSaveChanges
End With
End Sub
「Item.GetInspector.WordEditor.PrintOut False」で印刷できるかと思ったのですが、私がテストした限りでは印刷できませんでした。
2016年3月4日金曜日 7:46 | 1 票
以下のページに載っているコードをOutlook2010で試したところ、メール本文のみを取り出すことができましたので、参考になるかもしれません。
print email body only?
http://www.xtremevbtalk.com/archive/index.php/t-281904.html
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
2016年3月4日金曜日 11:55
早々にありがとうございます。チャレンジしてみます。
2016年3月4日金曜日 22:59
trapemiya様 有難うございます!
差出人、送信日時、宛先、件名を除く事ができました。あとは「ユーザー情報の名前」を印刷しない方法を探しています。もう一歩のところまでたどり着きました。感謝しています。
Sub printemail(Item As Outlook.MailItem) ‘had to do it this way to get it working as a script.
Dim oApp As Outlook.Application
Dim oSpace As Outlook.NameSpace
Dim oTempMail As Outlook.MailItem
Dim oFold As Outlook.MAPIFolder
Dim oInBox As Outlook.MAPIFolder
Set oApp = Application
Set oSpace = oApp.GetNamespace(“MAPI”)
Set oInBox = oSpace.GetDefaultFolder(olFolderInbox)
Set oTempMail = oApp.ActiveExplorer.CurrentFolder.Items.Add(olMailItem) ‘ Get body only
oTempMail.BodyFormat = Item.BodyFormat
oTempMail.Body = Item.Body
oTempMail.PrintOut
oTempMail.Delete
Item.UnRead = False
Set Item = Nothing
Set oTempMail = Nothing
Set oInBox = Nothing
Set oSpace = Nothing
Set oApp = Nothing
End Sub
2016年3月8日火曜日 9:38
きぬあさ様
ありがとうございます。参考になります。