- ベストアンサー
PDFファイルをExcelへ一括変換
- PDFファイルを一括でExcelに変換する方法について教えてください。
- 異なる内容のPDFを複数宛先にメール添付で送信するための手順を教えてください。
- PDFの分割、Excelへの変換、VBAを使ったファイル名の書き換えについて、初心者向けの情報をお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>残念ながら外部ファイルへの出力はできません。 元々の「業務パッケージソフト」から ペーバー や PDFファイル へ出力するときに、定型の書式というか フォーマット のようなものがあって、表組みの中に文字列や図形などが入っているというのではなくて、「ただの文字列の羅列」の場合は ●WindowsXPプリンタを使ってテキスト出力 http://hide-king.air-nifty.com/cider/2004/10/windowsxp.html のような機能で TXTファイル に印刷をして、それをエクセルで読み込むこともできます(※)。 が、しかし、問題が複雑になってきたようですので、もう一度、振り出しに戻って考えてみましょうか。。。 そもそも、今回の問題は、フローチャート的な書き方で分析すると、下記の様なことになるかと存じます。 >私自身を特定しやすくなることも望みません。 との事ですので、これ以上のアドバイスはできないかも知れませんが、ご参考までにご覧ください。 ------------------------------------------------------------------- 1)既に出力・分割済みの PDFファイル がたくさんあるので、その PDFファイル から「メールの送信先」を割り出したい、という場合。 1-1)PDFファイル の中に「メールの送信先」を割り出せるような「定型の文字列」がある場合。 「定型の文字列」というのは、例えば「会社名:○○産業 所在地:・・・」というように「メールの送信先」の前後に決まった文字列がなければなりません。 この場合は、「いきなりPDF to Data 2」などで、一つひとつ XLSファイル に変換して XLSファイル を同名で保存。すべての PDFファイル を XLSファイル に変換後、(ここまでは手作業、これより VBA)XLSファイル から「メールの送信先」を割り出して、同名の PDFファイル を改名。すべての PDFファイル が改名されたら、PDFファイル の名前から「メールの送信先」で振り分けて、送信先に一斉送信。 1-2)PDFファイル の中に「メールの送信先」を割り出せるような「定型の文字列」がない場合。 この場合は、すべての PDFファイル を手作業で改名し、VBAで、PDFファイル の名前から「メールの送信先」で振り分けて、送信先に一斉送信。 ------------------------------------------------------------------- 2)定期的に同様の作業をしなければならないので、作業量を軽減したい、という場合。 2-1)(※)で記したような「定型」の文書で、表組みや図形などが入っている場合。 この場合は、「業務パッケージソフト」から一旦 PDFファイル に出力し(1)と同様の作業になります。 2-2)(※)で記したような「ただの文字列の羅列」である場合。 2-2-1)PDFファイル の中に「メールの送信先」を割り出せるような「定型の文字列」がある場合。 この場合は、「業務パッケージソフト」から TXTファイル に出力し、(ここまでは手作業、これより VBA)Excel で TXTファイル を読み込んで、「定型の文字列」を足掛かりにして TXTファイル を分割、「メールの送信先」が判別できるよう(ファイル名に送信先名を付加しなくても、フォルダで分けるとか、変数に格納するなど)にして、PDFファイル に出力。全て出力されたら、「メールの送信先」で振り分けて、送信先に一斉送信。 2-2-2)PDFファイル の中に「メールの送信先」を割り出せるような「定型の文字列」がない場合。 この場合は、「業務パッケージソフト」から一旦 PDFファイル に出力し(1-2)と同様の作業になります。 ------------------------------------------------------------------- ザクッと書きましたので、考え間違い・書き間違いなどあろうかと存じますが、やはり、『最初から、「これしか方法がない」と決めて掛かるのではなくて、よくアタマの中を整理して、どういう順序でコトを運ぶのが無理がないかをよく検証の上、「では、これをこうするにはどうしたらよいのだろうか?」という研究をされるのが肝心かと存じます。』 なお、VBA での操作に関しましては、 ・Dir 関数 でフォルダ内の PDFファイル をすべて拾い出す。 ・Name ステートメント でファイル名を改名する。 ・CreateObject 関数("CDO.Message")、または BASP21 でメールの送信 というような要素になろうかと存じます。 >ご親切にご回答いただいておりましたことには >大変感謝しております。 ぃぇぃぇ、「情けは人のためならず(もちろん、元来の意味)」です。 では、ご健闘をお祈り申します。 <(_ _)> ------------------------------------------------------------------- なお、この質疑は進展の見込みがなさそうですが、上記を踏まえて、漠然とした内容ではなくて、ある程度のところまではご自分で試行してみられて、つまづいたトコロで、ピンポイントなご質問を新規に立てられるのがよいかと存じます。
その他の回答 (3)
- DOUGLAS_
- ベストアンサー率74% (397/534)
>やはりEXCELでないとVBAで文字列を検索は難しいですか。 と、思います。 <(_ _)> が、しかし、「文字列の検索」はその PDFファイル の宛先を調べるための操作でしょうから、PDFファイルに印刷した日時等から「宛先」を割り出せるのでしたら、Excel に読み込んで「文字列を検索」する必要もありません。 要は、「何がしたいのか」・「どうなって欲しいのか」という条件と、「業務パッケージソフトの機能」・「既に印刷された PDFファイル の数」等の条件の兼ね合いかと存じます。 最初から、「これしか方法がない」と決めて掛かるのではなくて、よくアタマの中を整理して、どういう順序でコトを運ぶのが無理がないかをよく検証の上、「では、これをこうするにはどうしたらよいのだろうか?」という研究をされるのが肝心かと存じます。 例えば、 >業務パッケージソフトからの印刷をPrimoPDFを使って >PDFにしていますので元はEXCELではありません。 ということでしたら、「業務パッケージソフト」から CSVファイル へ出力ができれば、 1)「業務パッケージソフト」から CSVファイル へ出力。 2)Excel で CSVファイル を読み込み。 3)必要データの取得 4)Excel で PrimoPDFを使って PDF に印刷。 5)Excel VBA で メール送信 というような段取りになろうかと存じます。 で、「業務パッケージソフト」から CSVファイル への出力はできますでしょうか? CSVファイル でなくても、Excel で読み込める種類のファイルであれば結構です。 ・できるかどうかのお返事 ・できるとしたら、その出力ファイルの「拡張子」(CSV、TXT など) をお知らせいただけるとお話しが前に進みます。
- DOUGLAS_
- ベストアンサー率74% (397/534)
[回答番号:No.1] の DOUGLAS_ です。 先ず、 >変更後のPDFを手動でメールに添付し送信。 >自動メール送信までは望んではいませんでしたが >送信まで出来れば言うことなしです。 についてですが、メールを自動で添付することは、「送信先」・「添付ファイル名」が確定できれば、可能です。 >送信先の異なるPDFファイル名を送信先が判別できるように変更。 判りました! 問題は「ここ」ですね。 なさりたいことは、 1)PDFをエクセルに読み込んで、その内容から「送信先」を割り出す。 2)(1)によりPDFに送信先が判別できる文字列を加える。 3)全てのPDFについて、(2)の操作を行なう。 4)全てのPDFについて、ファイル名から送信先を割り出し、複数の送信先にそれぞれ該当するPDFファイルを添付して、メールを送信する。 ということでよろしいでしょうか? ここで問題なのですが、そもそも、その複数のPDFファイルがどのようにして生成されたかによって、エクセルに読み込んだとしても、VBAで文字列を検索できないようなことはありませんか? もし、「いきなりPDF to Data 2」でPDFファイルをエクセルブックに変換して、そのデータから「送信先」を見つけることができるのでしたら、一連の操作は下記のようなことになります。 1)「いきなりPDF to Data 2」を起動する。 2)1つのPDFファイルをエクセルブックに変換する。 3)「送信先」を割り出してから「1つのPDFファイル」を閉じる。 4)「1つのPDFファイル」のファイル名を変更する。 5)(2)~(4)をPDFの数だけ行なう。 6)ワークシート上に書かれた「送信先名」・「そのメールアドレス」を頼りに、(5)で改名されたPDFファイルの内、該当するものを添付してメールを送信する。 ですが! 私的には、 >変更後のPDFを《手動で》メールに添付し送信 されるおつもりだったのでしたら、PDFファイル名の変更の方を手動でされた方が間違いがなくてよいかと存じます。 なお、メールの自動送信につきましては、下記をご参考に。 ◇Thunderbirdで一括送信 http://okwave.jp/qa4994607.html ●CDOでメール送信 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html ●Windows標準機能とWSHを使ってメールを送信する http://www.atmarkit.co.jp/fwin2k/win2ktips/428wshmail/wshmail.html 添付ファイルは oMsg.AddAttachment "添付ファイル名1のフルパス" oMsg.AddAttachment "添付ファイル名2のフルパス" oMsg.AddAttachment "添付ファイル名3のフルパス" というように複数指定できます。 お分かりにならないことがありましたら、補足願います。
補足
業務パッケージソフトからの印刷をPrimoPDFを使ってPDFにしていますので元はEXCELではありません。 また下記は使用した感想で紹介サイトを見た感想でした。 明確でなくすみませんでした。 ソースネクストの いきなりPDF to Data 2 は「まとめて」では ないようでした。 やはりEXCELでないとVBAで文字列を検索は難しいですか。
- DOUGLAS_
- ベストアンサー率74% (397/534)
例えば、のお話しですが、 ・ファイル名を書き換えること自体は、VBAで簡単にできます。 ・元からある複数のPDFファイルを「複数宛先にメール添付で送信」することは、VBAで可能です。 ・エクセルのファイルを複数のPDFに出力して、それを「複数宛先にメール添付で送信」することは、VBAで可能です。 などなど。。。 ご質問のタイトルが >PDFファイルをExcelへ一括変換 ご質問内容の書き出しが >同一フォーム異なる内容のPDFを複数宛先にメール添付で送信したい。 とのことですが、それと「想定している処理手順」とは内容が異なるように見受けられます。 その上、(3)・(4)の内容は、それ自体に統一性を感じられません。 「欲しい情報」として2点挙げていらっしゃいますが、その前に、もう少し「やりたいこと」を整理された方がよいかと存じます。 「想定している処理手順」ではなくて、「結果的にどういうことになって欲しいのか」が見える内容の補足をお願いいたします。
補足
補足いたします。 (4)は(3)が出来なければなので併記は不適当でした。 「やりたいこと」 送信先の異なるPDFファイル名を送信先が判別できるように変更。 変更後のPDFを手動でメールに添付し送信。 自動メール送信までは望んではいませんでしたが 送信まで出来れば言うことなしです。
お礼
残念ながら外部ファイルへの出力はできません。 詳細をお伝えしご助力いただきたいのですが、 こちらの事情をお伝えすることで 私自身を特定しやすくなることも望みません。 ご親切にご回答いただいておりましたことには 大変感謝しております。