質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

6227閲覧

VBAで自動的に特定のフォルダに入っているmsgファイルやtxtファイルをPDF化する方法について

pegy

総合スコア243

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/09/18 06:13

現在aフォルダに以下の様なファイルが格納されています。
これがa-zフォルダまであるような状態で、pdfではないファイルをpdf化したうえで自動的にVBAで結合できないかと閑雅ております。

aフォルダ
hoge.pdf
piyo.txt
fuga.msg

利用しているAcrobatの契約:Acrobat 2017

PDFの結合自体はVBAでこちらのサイトを参考にして、技術的にできるのではないかと考えております。
※サイトの中ではAcrobat Proの契約が必要と書いてあったのですが、参照設定のライブラリでAcrobatにチェックを入れることができたので、いけると考えております。

一方で、msgやtxtファイルをpdf化する作業を自動化できないものかとGoogleで探しているのですが、それらしいものを見つけることができません。このような技術はvbaでは実現できないのでしょうか?方法をご存知の方がいればアドバイスを頂きたいです。

宜しくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

とりあえず変換する関数を作ってみました。
MSGファイルは、一旦HTML化したものをワークブックとして開きそれをPDFに変換しています。
TXTファイルは直接ワークブックとして開きPDFに変換しています。
ただTXTファイルは文字コードがSJIS限定です。
何かの設定でUNICODEにも対応できたと思うのですが失念しました。
思い出したら追記します。

VBA

1Sub test() 2 Call Msg2Pdf("aaa.msg", "aaa.pdf") 3 Call Txt2Pdf("bbb.txt", "bbb.pdf") 4End Sub 5 6Sub Msg2Pdf(msgf As String, pdff As String) 7 8 Dim ol As Outlook.Application 9 Dim msg As Outlook.MailItem 10 Dim wb As Workbook 11 Dim htmlf As String 12 13 htmlf = msgf & ".html" 14 15 ' MSGファイルを開く 16 Set ol = New Outlook.Application 17 Set msg = ol.CreateItemFromTemplate(msgf) 18 19 ' HTMLに変換 20 msg.SaveAs htmlf, olHTML 21 22 ' Outlook後始末 23 msg.Close olDiscard 24 Set msg = Nothing 25 Set jol = Nothing 26 27 ' HTMLファイルを開く 28 Set wb = Workbooks.Open(htmlf) 29 30 ' PDFに変換 31 wb.ExportAsFixedFormat xlTypePDF, pdff 32 wb.Close 33 Set wb = Nothing 34 35 ' HTMLファイル削除 36 Kill htmlf 37 38End Sub 39 40Sub Txt2Pdf(txtf As String, pdff As String) 41 42 Dim wb As Workbook 43 44 ' TXTファイルを開く 45 Set wb = Workbooks.Open(txtf) 46 47 ' PDFに変換 48 wb.ExportAsFixedFormat xlTypePDF, pdff 49 wb.Close 50 Set wb = Nothing 51 52End Sub 53 54 55

投稿2020/09/18 07:49

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2020/09/23 02:51

コメントを頂き、誠にありがとうございます! かなりの部分が解決しました。神・・・ 重要な問題ではないのですが、例えばMsg2Pdfを実行した後に、同じディレクトリに xxxx.msg.filesといったディレクトリが作られ、その中には colorschememapping.xml filelist.xml themedata.thmx にようなものができてしまうのですが、これは仕様でしょうか?
ttyp03

2020/09/23 03:03

あぁ、そこまで確認してませんでした。申し訳ない。 HTML化することでファイルが作られてしまうのですね。 そのフォルダごと削除して構わないので、処理を追加してみてください。 ただフォルダ内にファイルがあると削除するのは面倒かもしれませんが。
pegy

2020/09/23 04:08

承知を致しました、有難うございます!
guest

0

こんにちは。

msgがどのようなファイルかわからないので出来るとは言い切れませんが。

WordVBAでファイルを開き、ExportAsFixedFormatでPDF指定すればよいのではないでしょうか?

参考:【コード】WordファイルをPDF形式で保存するWordマクロ

投稿2020/09/18 06:37

kay-ws

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2020/09/18 06:47

コメントありがとうございます。.msgはoutlookで、メールが保存される場合の拡張子です。リンクを見たのですが、ちょっとmsgからpdfには拡張子を返還すれば利用できるものではないので難しいかも知れません
kay-ws

2020/09/18 07:13

少し訂正: (訂正前)WordVBAで.rtfをPDFに変換する (訂正後)VBAでWordを操作して.rtfをPDFに変換する
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問