- ベストアンサー
マクロでエクセルをメール送信したい。
最近、マクロを始めたのですが、マクロでActiveWorkbook(エクセル) を添付して、メール送信までを出来ないかな?と思っています。宛先 はエクセルの別シートにリストで入力しておき、VLOOKUPで参照して、 必要な人に配布したいのです。色々調べたのですが、よくわかりま せん。簡単なやり方があれば教えていただけませんか? メールソフトはOutlook、OSはWindowsXPです。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
CDO BASP21 メール でネット検索してみてください。 アクティブブック<>ThisWorkBooxでしょうか?
その他の回答 (4)
- marbin
- ベストアンサー率27% (636/2290)
akina_lineさんの、#3のレスをよく見てませんでした。 #4の私のレスはスルーしてください。 失礼しました。
- marbin
- ベストアンサー率27% (636/2290)
#1です。 ThisWorkbookの場合は、一度 SaveCopyAs で別ブックとして保存してから、別名保存したものを 添付してはいかがでしょう? ActiveWorkbookの場合も同じようにできます。 もちろん、akina_lineさんの方法のほうが、別名保存、 場合によっては保存したものを削除、の手間がないので より効率的だと思いますが。
お礼
別名保存をしてから、添付をすればいいの ですね?SaveCopyAsを使用したらすぐ出来 ました。ありがとうございました。助かり ました。
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。#2です。 >ActiveWorkbookの時はどう記述するかわかりませんので、教えていただけませんか? >MailAddFile = Application.GetOpenFilename("全てのファイル (*.*),*.*",, _ >"添付ファイルを選択して下さい。",, True) この記述はファイル選択ダイアログを出して、ファイルのパスをMailAddFileに格納するというものです。 http://www.happy2-island.com/excelsmile/smile03/capter00803.shtml ですので、ActiveWorkbookを添付したい場合は、 1.ActiveWorkbookをテンポラリ・ファイルに保存する。 2.MailAddFileにテンポラリ・ファイルの絶対パスを格納する。 3.送信後、テンポラリ・ファイルを削除する。 という風に書き換えればよいと思います。(ActiveWorkbookが保存不要なものと考えて、テンポラリ・ファイルに保存しましたが、保存すべきものであれば、「名前をつけて保存」ダイアログで保存した後、その絶対パスを格納します。) では。
お礼
Activeworkbookをそのままの状態で、 添付は出来ないのですね?格納してから 添付したら、出来ました。 ありがとうございました。
補足
MailAddFileで2つのエクセルデータ(たとえば下記)を 添付したい時にはどう記述したらいいのでしょうか? 再度教えて下さい。 C:\Documents and Settings\デスクトップ\test1.xls C:\Documents and Settings\デスクトップ\test2.xls 下記のように記述してみましたが、1つしか添付されません でした。どうしてでしょうか? MailAddFile "C:\Documents and Settings\デスクトップ\test1.xls" MailAddFile "C:\Documents and Settings\デスクトップ\test2.xls"
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 下記サイトをご参照下さい。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html VBAを始めたばかりだと、難しいかもしれません。 頑張ってください。 では。
お礼
ありがとうございます。お薦めのサイトはやり方がわからず、 検索していたら、出てきたので、それを参考にコードを記述 して、ある程度出来たのですが、下記のところのコードが、 ActiveWorkbookの時はどう記述するかわかりませんので、 教えていただけませんか? MailAddFile = Application.GetOpenFilename("全てのファイル (*.*),*.*",, _ "添付ファイルを選択して下さい。",, True)
お礼
ありがとうございます。 ThisWorkbookって事だと思います。作成したものをすぐ メール添付して送りたいのです。開いていて、アクティブ になっているもの(メール送信動作を指示しているマクロ ボタンを作ってあるエクセル)です。 メールへ添付するのを下記を参考に記述をしたいのですが、 (CDOを使って)その場合、ActiveWorkbookを指定する 時、コードはどのように記述したらいいのか?教えてもら えませんか? MailAddFile = Application.GetOpenFilename("全てのファイル (*.*),*.*",, _ "添付ファイルを選択して下さい。",, True)