カテゴリ:Excel&Word,VBA
さて, 手抜きの続きです. #業務の簡素化,効率改善って考えるとチョッとマシな気分になる. #でも,スケールが小さいなぁ......小さすぎて効率上らんとおもう #けど. Web をググってみると,結構イロイロ hit します. いちばん目立つのが BASP21 を利用する方法ですけど, コレを利用するには,配布されている BASP21 の機能をインストー ルする必要がある. これは,会社から貸与されているマシンを業務で使わせてもらってい る関係上,勝手にインストールは,内規にも触れるし,ちょっと手を 出しづらいですね. 仮にオッケーが取れたとしても, 手抜きを実現するにあたり,相手側のコンピュータにもインストール をお願いしなくてはならないしね.やっぱりコレって手間だよね. それと, チョッとマシンの動きが悪くなると「アレ入れたから」じゃない? とか言われて呼び出されることも考慮すると,手離れが悪いですね. そこで, 更に別の方法を探すと,CDO による電子メール送信が出てきます. O/S は Win2000 以上の制約があるものの Windows 純正機能(既にマ シンに入っちゃってるし)なので,会社貸与のマシンでも気兼ねなく 利用できるところが凄くイイね. この CDO による電子メール送信は, ITmedia Inc. のサイト http://www.atmarkit.co.jp の CDOによる 電子メール送信の記事が,必要な情報をだけを載せているので読 み易くってイイです. ※有名処では「Excel でお仕事」のサイトにも,このCDO による方法 を載せてるけど, 知り得た一杯の知識を,全部載せようとしている辺りが何だかねぇ...... #あ,読みづらいのですよ. 早速上手く自動送信ができるところまで確認が取れたけど, この CDO も万能ではなくって,メール本文(body)は,何も工夫しな ければ,固定文になっちゃうところが辛い. そこで, 6は,Excel Sheet の決まった列10行を,本文用に割り振った. で, そのセル一群を,"&" と,改行制御文字 "vbCrLf" を組み合わせて, 文字列連結の処理を入れてます. それともう一つは, マクロを走らせた Excel Sheet を添付させるのですけど,自分自身が オープンの状態だから,共有違反になって添付できないところ. なので, 一旦自分自身を適当な場所にコピーして,そのコピーを添付するように して,送信後に,そのコピーを削除させてます. #もしかして 共有違反にさせない方法を6が知らないだけなのかもで #すけどね...... #あ,適当と言っても,ちゃんとみんなのディレクトリ環境に見合う場 #所ぢゃないといけないですよね. このマクロ,知ってる人なら VBScript にも置き換えられちゃうから, イロイロと自動送信の応用が広がりますね. 今では大手商用の ISP ならば,メールサーバ側に送信する間隔に制限 が入っている筈だけど,駄目だよね悪いことに使っちゃね.絶対にね. この他にも,From,To,Ccアドレスをセットするプロシージャや, 添付ファイルにするために一時保存する操作とか,イロイロ下準備する 必要があるのですけど,皆さん知りたい部分は,送信部分だろうと思う ので,ソコだけ載せますね. :Sub SendMailCDO() :Dim oMsg As Object : :Set oMsg = CreateObject("CDO.Message") : : oMsg.From = hoge@hoge : oMsg.To = hoge@hoge : oMsg.Cc = hoge@hoge : oMsg.subject = Range("A1").Text : oMsg.TextBody = "hogehoge のご送付." & vbCrLf & _ : "mailto:" & MailFromSet & vbCrLf & Now : oMsg.AddAttachment "c:\添付ファイルまでのフルパス" : : oMsg.Configuration.Fields.Item _ : ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 : oMsg.Configuration.Fields.Item _ : ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTPサーバ" : oMsg.Configuration.Fields.Item _ : ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 : oMsg.Configuration.Fields.Update : oMsg.Send : :Set oMsg = Nothing : :End Sub © 6ちゃん@かなり便利になりました. #VBA ネタだから,一日当たりのカウントがまた大幅アップするでしょうかね? p.s ご質問は,電子メールを投げて頂ければなんとか頑張るかもです. でも, ちゃんとした目的がある方からの質問しか受け付けないです. とは言うものの,お応えは気が向いたらする程度なので......すまん....... #何もかも受け付けなきゃならんと言う義務も無い筈ですから...... お気に入りの記事を「いいね!」で応援しよう
Last updated
2009.10.27 22:17:42
コメント(0) | コメントを書く
[Excel&Word,VBA] カテゴリの最新記事
|
|