- 締切済み
VBAに詳しい方に質問致します
こんにちは! 私は今VBAの学習しています! 質問(1) 「Outlook Express」の 受信メールを「EMLファイル」に変換後、 「Excel VBA」でメールに 添付されている「txtファイル」を 読み込む操作をしたいのですが どのようにコーディングしたら良いのか分かりません… 何方か御享受願います。 質問(2) 参考になるサイトがありましたら サイトのURLも記載して頂いたら嬉しいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
質問者が言うVBAはエクセル(かワード)VBAだと思うが、OEをVBAで扱おうとするのは見当違いと思う。エクセルVBAはエクセル用にエクセルの操作を扱えるオブジェクト(プログラム群)が寄せ集められていて、OE用のものはないと思う。出来るとすればVB(6.0)としての機能部分を使うことしか出来ないと思う。 IEの場合は、VBAはないがCreateObjectで相当のところまでコードで扱えるようだ。しかしOEはそれさえも無いようだ。 Shellで起動は出来ても、あとのメソッドとかプロパティが公開されていないようだ。 Outlookの方はVBAもあるので、(WEBでの情報は断片的で、解説市販書籍は多分無いだろう。だから勉強しにくいが)まだ勉強をすれば出来る環境にある。 http://okwave.jp/qa2098275.html にあるように「Outlookでeml形式で保存」できるようだ。 読むのも、ファイルー開くで出来るのではないか。 ーー 「Outlook EML」などでGoogleでなぜ照会しないのかな。 同じく「Outlook Express EML」や「OE EML]などで照会のこと。 ーーー http://homepage1.nifty.com/MADIA/vb/vb_bbs/200603/200603_06030034.html など参考になりますか。 このとき 'Microsoft ActiveX Data Objects 2.5 Object Library] への参照を設定しておく必要がある。2.5以下以上でもよいかも。 #Fnは#1でやる。ただ途中でとまる。 >添付されている「txtファイル」を読み込む操作をしたいのですが このファイルを捉えられたら、読むのは簡単なVBコードだと思う。
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
2つほど代替案を思いついたので。 1. メーラーをMicrosoft Outlook(Office製品)に切り替える Microsoft Outlook は外部からの操作が可能です。どこまで出来るかは試していませんが手段が提供されていないOutlook Expressよりは相手にしやすいと思います。既存のメールもエクスポート機能を使うことでMicrosoft Outlookに移行することができます。 2. メールサーバーから自分でメールを取ってくる 既存のメールには適用できませんが、定期的に添付ファイルを保存する必要があるのなら、Outlook Expressで受け取るよりも先にメールサーバーへ直接メールを取りにいく方法はいかがでしょう? BASP21というコンポーネントを使えばメールの取り込みと添付ファイルの保存を行うことが出来ます。 上記2つの具体的な方法はOKWaveの過去ログにも情報があるはずです。検討するのであれば探してみて下さい。 あくまでOutlook Expressで、ということであれば最終手段としてメールデータが記録されている.dbxファイルのバイナリ(16進数の羅列)を直接読む、という方法もあります。.dbxのフォーマットは公式ではありませんがネットで公開されているので可能ではあります。(ただ、かなり難易度が高いですが・・・)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
Outlook Expressを外部から操作する手段は提供されていないため、EMLファイルの作成は手動かマウス・キーボードの自動操作になると思います。(文面を見る限りここはVBA処理ではなさそうなのでこれ以上は割愛) EMLファイルの読み込みについてですが、EMLファイル自体は一般にテキストで作られています。添付ファイルの場合はマルチパート構造になっていると思うので、これを自力で解析することになるかと。 (ネットを探せばEMLファイルを構造化オブジェクトとして読み込めるCOMクラス等が存在するかもしれませんが・・・) 自力で読み込む場合は「メール multipart」をキーワードに検索してみてください。メールデータの基本的な構造が分かると思います。 VBAの処理としては、ファイルの読み込み系ステートメント、文字列操作系関数が扱えれば実装できると思います。ただ、添付ファイルはBASE64エンコードされている場合があるので、BASE64デコードも必要になると思いますが、こちらはCOMコンポーネント(ActiveX DLL)やVBでのサンプルコードがネットで配布・公開されていますので必要であれば探してみて下さい。 具体的なコードじゃなくてすみませんが、検索キーワードにできそうなものを並べておきました。
補足
Shell ("C:\Program Files\Outlook Express\msimn.exe. ") で起動は出来るのですが… OutlookExpressは CreateObjectが使用できなくてメールに添付されている txtファイルをC:\に保存する事も出来なくて 手動操作になってしまいます… 私はVBAの勉強を始めて2ヶ月 完全にメールの所で止まってしまいました…
補足
アドバイスありがとうございます。 それがOutlookでは CreateObject("Outlook.Application")で 起動させてメールに添付されているtxtファイルを C:¥に保存する事が出来たのですが… そのプログラムはそんな難しくなかったです。 2日位で出来あがったですが、 VBA」でのOutlookExpressのサイトなどが なくて悩んでいる感じです… 今はBASP21をインストールしようか 考えてます。 2回もアドバイスくれてありがとうございます。