現在EXCELVBAでプリンターに出力された納品書を毎日50社ぐらいの顧客に手動FAXにて送っています。
通信費削減のために、ファイルをPDF化してEMAIL送信出来るようにしたいと思っています。
添付するファイルがEXCEL BOOKのままであれば以下のコードで出来るのですが、PDF化するやり方が分かりません。
ActiveWorkbook.SendMail Recipients:="email@*****.co.jp", _
Subject:="test"
10万円程度であれば、Adobe Acrobatなどのソフト購入してでも実現させたいと思っています。
又、ユーザーの操作はメーラーの「送信」ボタンをクリックする程度に留めたいです。
よきアドバイスよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
Wordドキュメント → PDF への変換なら、以前VBのメーリングリストでコードを見たことがあり、それを元に作成した経験があります。
(2003年の8月頃?)ExcelにもWorkbook.PrintOutメソッドはあり、PrintToFile が引数で指定できますので、同じようなことはできるはずです。(未確認)
参考までに、Word用のコードを単純化したものを抜粋します。
※ 下記は、必要最小限の要素を単純化して示したものです。
このままでは汎用性もなく、使い物にはなりません。
※ インデントは半角スペースに変換のこと。
'****************************************************************
'必要ライブラリ
'
'Microsoft Word 9.0 Object Library C:\Program Files\Microsoft Office\Office\MSWORD9.OLB
'Acrobat Distiller C:\Program Files\Adobe\Acrobat 5.0\Distillr\Acrodist.exe
'****************************************************************
'
'エラーコードの定義
Public Const pErrPrinterNotAvailable As Long = 2212 'プリンタが無効です。
Sub MakePdfSample(ByRef strPrinter As String)
'WordドキュメントのPDF変換
'コードの一部分のみ抜粋。
Dim objWrdApp As Object ' Word.Application
Dim objWrdDoc As Object ' Word.Document
Dim objAbDist As Object ' ACRODISTXLib.PdfDistiller
Dim strDefaultPrinter As String
'「Acrobat ・・・」以外のプリンタは使用させない。
If Left$(strPrinter, Len("Acrobat Distiller")) <> "Acrobat Distiller" Then
Err.Raise pErrPrinterNotAvailable, _
, _
"このプリンタではPDFファイルは出力できません。" _
& vbCrLf & "Adobe の Acrobat Distiller を選択してください。"
End If
Set objWrdApp = CreateObject("Word.Application") 'New Word.Application
Set objAbDist = CreateObject("PdfDistiller.PdfDistiller.1") 'New ACRODISTXLib.PdfDistiller
'通常使用するプリンタの情報を退避。(処理の完了後、または実行時エラー発生時に元に戻す)
strDefaultPrinter = objWrdApp.ActivePrinter
'objWrdApp.ActivePrinter = "Acrobat Distiller on LPT1:"
objWrdApp.ActivePrinter = strPrinter
Set objWrdDoc = objWrdApp.Documents.Open("C:\Test.doc")
objWrdDoc.PrintOut _
Background:=False, _
PrintToFile:=True, _
OutputFileName:="C:\Test.ps"
objAbDist.FileToPDF _
"C:\Test.ps", _
"C:\Test.pdf", _
vbNullString
objWrdDoc.Close False
objWrdApp.ActivePrinter = strDefaultPrinter
objWrdApp.Quit
End Sub
Option Explicit
'****************************************************************
'必要ライブラリ
'
'Microsoft ActiveX Data Objects 2.5 Library '他のバージョンでの動作は未確認。(2.1での動作は×)
'Microsoft CDO For Exchange 2000 Library
'****************************************************************
'引数
'
'strPath 添付ファイルのフルパス
'strSmtp SMTPサーバー (例 : www.mail.hogehoge.com)
'strFromAddr 送信者アドレス (例 : hogehoge@hogehoge.com)
'strFromName 送信者名 (例 : ××株式会社 〇〇担当)
'strSubject 件名 (例 : 未承諾広告)
'strAddr 送信先アドレス (例 : scott@tiger.com)
'strToName 受信者名 (例 : △△株式会社 ◇◇様)
'strMailBody メール本文
'strCcAddress CCアドレス
'strBccAddress BCCアドレス
'****************************************************************
'添付ファイル付きメールの自動送信。
Public Function SendMail( _
ByRef strPath As String, _
ByRef strSmtp As String, _
ByRef strFromAddr As String, _
ByRef strFromName As String, _
ByRef strSubject As String, _
ByRef strAddr As String, _
ByRef strToName As String, _
ByRef strCcAddress As String, _
ByRef strBccAddress As String, _
ByRef strMailBody As String _
) As Boolean
Dim objMessage As CDO.Message
Dim objConfiguration As CDO.Configuration
Dim objFields As ADODB.Fields
SendMail = False
' Configurationオブジェクトを生成
Set objConfiguration = New CDO.Configuration
' Filedsオブジェクトを生成
Set objFields = objConfiguration.Fields
' フィールド情報を設定
With objFields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = strSmtp
' フィールド情報を更新
.Update
End With
' Messageオブジェクトを生成
Set objMessage = New CDO.Message
' メッセージ情報を設定
With objMessage
Set .Configuration = objConfiguration
.Subject = strSubject
.To = """" & strToName & " 様"" <" & strAddr & ">"
If Len(strCcAddress) <> 0 Then .CC = strCcAddress
If Len(strBccAddress) <> 0 Then .BCC = strBccAddress
'複数アドレス指定の場合、変更の必要あり。
.From = """" & strFromName & """ <" & strFromAddr & ">"
.TextBody = strMailBody
.AddAttachment strPath
'メールを送信
.Send
End With
SendMail = True
Set objMessage = Nothing
End Function
ご回答ありがとうございます。
記載いただいたコードを基になんとか出来そうな感じです。来月の生活費がかかっている(笑)ので頑張ってみます。
No.2
- 回答日時:
もうご存知でしょうが
アドビ、低価格PDF作成ソフト「Acrobat 7.0 Elements」が最近発売されています。
http://pc.watch.impress.co.jp/docs/2005/0406/ado …
http://www.amazon.co.jp/exec/obidos/ASIN/B00097C …
’-----
上記ソフトを導入すると、Word/Excelからのワンボタン変換ができるようです。
しかしこの操作(手作業)をエクセルVBAから自動的に行うのは難しいでしょう。それはマイクロソフト社がその気にならないとできないでしょうが、利害対抗関係・特許関係などから実現はむつかしい問題ではないでしょうか(この点自信なし)。
ツールバー(?)ボタンを押す操作を研究してVBAでプログラムで実現しても、ファイル名を与える場面などで行き詰まるとおもいます。
一般にすべてマイクロソフト社のソフトとその他社ソフトの連携という点で難しい問題です。
’----
むしろアドビ社のAcrobatのカタログなどで、エクセルファイルをe-mail送信で便利な機能がないか検討(カスタマーインフォーメーションに聞くとか)してみてはどうでしょう。(手元に量販店で手に入れたAcrobatの宣伝パンフがありますが、それらしい機能は載ってないようですが。またPro版は5万7千円ですが。)
そうですね。EXCELにあるAdobeのワンボタンがクリック出来たらいいなと思っていました。
もうAdobe関係の情報も少し調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
VBAを使ってエクセルシートをFAXで送信したい。
Visual Basic(VBA)
-
VBAでPDFファイルをメールに添付する
その他(プログラミング・Web制作)
-
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サンダーバードのアドレス帳へ...
-
筆ぐるめで送信履歴の出し方
-
Thunderbirdの送信トレイについて
-
メールが送信できなくなりました
-
Thunderbird 「後で送信」の設...
-
パワポで曲がった両矢印の簡単...
-
パワーポイントで作図した図を...
-
「ワード」の「ハイフン」を縦...
-
点線の円(○・丸)
-
封筒における漢字の「11」の書き方
-
Wordのファイルを開くと、開い...
-
Wordで家系図を書きたいです。
-
急いでます!「~」の打ち方
-
Power Pointでベクトル表記や筆...
-
MS-Word段落番号とそのあとの文...
-
画像の貼り付けができない
-
画像を、余白0でA4全画面で...
-
WORDでシナリオのように書...
-
Excelで左側に1ページ目、右側...
-
Excelにて用紙(縦)の、中央左...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Thunderbird 「後で送信」の設...
-
サンダーバードのアドレス帳へ...
-
Thunderbirdの送信トレイについて
-
Outlookが送信不可
-
iTunesの誤ったCDDB情報を修正...
-
メールが、入力中に送信してい...
-
Outlookでメールを送信ができま...
-
筆ぐるめで送信履歴の出し方
-
「あとで送信」が知らないうち...
-
未送信メールが見当たらない。
-
【サンダーバード】”下書き”や”...
-
シリアルの送信完了を待つ方法
-
送ったメールが「送信済み」に...
-
Notes 送信ボックスに何も入り...
-
送信エラーで送ったメールが消...
-
EXCEL VBAで→PDF化→自動メール送信
-
「Unicodeで送信」という表示が...
-
Becky!ver.2の送信エラーについて
-
IPMessengerの不具合について
-
WIN XP ハイパーターミナルでRS...
おすすめ情報