やはり、文書は添付ファイルでメール送信したい
はい、わかりました。
今回も OneDriveのフォルダにある 郵便物管理 のファイルを使いますので
ダウンロード ファイルを開くで確認してみてください
メール送信のボタンのVBAのコードは
Sub ボタン1_Click()
MyPrt = Application.ActivePrinter
'今のプリンターを覚えておく
Application.ActivePrinter = "Microsoft XPS Document Writer on Ne00:"
'プリンターを XPSプリンターに切り替える
Set oApp = CreateObject("Outlook.Application")
'OutLookを制御できるようにする
ActiveSheet.Columns("A:G").PrintOut printtofile:=True, PrToFileName:=ThisWorkbook.Path & "\添付.xps"
'A~G列を印刷、添付.xpsと云う名前で保存
Set objMAIL = oApp.CreateItem(0)
objMAIL.to = Range("C3").Value
objMAIL.Subject = Range("C4").Value
objMAIL.Body = Range("C5").Value
objMAIL.Attachments.Add ThisWorkbook.Path & "\添付.xps"
'添付ファイルに添付.xps
objMAIL.Send
Application.ActivePrinter = MyPrt
'覚えておいた元のプリンターへ切り替える
Kill ThisWorkbook.Path & "\添付.xps"
End Sub
にしてみてください。
’で始まる行は、コメント分と呼ばれて、動作に関係ない部分です。
VBエディターでは、緑色で表示されます。
流れですが
1、現在のプリンターを覚えておく
2、XPSプリンターに切り替える
3、印刷ファイルを保存
4、メール送信文書に、印刷ファイルを添付
5、元々のプリンターに戻す
6、作成したXpsファイルを削除
こんな感じのプログラムです。
必要に応じて編集して使ってください。
でも、なぜエクセルでメールの送信(Outの操作)が出来るの?
それは、MSのアプリケーションが
OLE【 Object Linking and Embedding 】 と呼ばれる
複数のソフトウェアが連携したり、データを共有したりするための仕組み。を持っているからです。
Outだけではなく、WordやAccessなども操作できます。
でも操作の際は
objMAIL.to の様に OutLookのVBAを知る必要があります。
加えて Xpsプリンターですが、Windows7より標準装備された
機能で、PDFのMS版です。
そうです。これまで有料だったアドべ社のソフトを購入しなくても
良くなったわけです。