人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel VBAによってブックをメールで送信する機能で、DialogコレクションのxlDialogSendMailを表示するものがあります。
実行するとメールソフトが起動して本文などを入力できます。
指定できる引数は以下のものがあります。

arg1 宛先のメールアドレス
arg2 メールの件名
arg3 受信通知の有無

宛先だけではなく、CCの宛先メールアドレスの設定方法をご存知の方がおりましたらご教授していただけないでしょうか。
たとえば以下のようなCodeを書くとa@hotmail.comへ件名"質問"というマクロが設定がされます。

Sub aaa()

Application.Dialogs(xlDialogSendMail)
.Show arg1:="a@hotmail.com" arg2:="質問", arg3:=False

End Sub

これにCCの宛先を設定する方法をご教授お願いいたします。

よろしくお願いいたします。


●質問者: TakuTa
●カテゴリ:コンピュータ インターネット
✍キーワード:@hotmail.com aaa application CC Excel
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tokuya_n
●27ポイント

MSが提唱しているCDOを使ってメールの送信を行なってみます。

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html

'*******************************************************************************

' メール送信(CDO) ※参照設定:Microsoft CDO for Exchange 2000 Library

' Microsoft ActiveX Data Objects 2.x Library

'*******************************************************************************

' [引数]

' ?MailSmtpServer : SMTPサーバ名(又はIPアドレス)

' ?MailFrom : 送信元アドレス

' ?MailTo : 宛先アドレス(複数の場合はカンマで区切る)

' ?MailCc : CCアドレス(複数の場合はカンマで区切る)

' ?MailBcc : BCCアドレス(複数の場合はカンマで区切る)

' ?MailSubject : 件名

' ?MailBody : 本文(改行はvbCrLf付加)

' ?MailAddFile : 添付ファイル(複数の場合はカンマで区切るか配列渡し) ※Option

' ?MailCharacter : 文字コード指定(デフォルトはShift-JIS) ※Option

' [戻り値]

' 正常時:"OK", エラー時:"NG"+エラーメッセージ

'*******************************************************************************

Private Function SendMailByCDO(MailSmtpServer As String, _

MailFrom As String, _

MailTo As String, _

MailCc As String, _

MailBcc As String, _

MailSubject As String, _

MailBody As String, _

Optional MailAddFile As Variant, _

Optional MailCharacter As String)

という関数の定義例が載ってます。


2 ● ardarim
●27ポイント

xlDialogSendMailを使ったやり方だと、宛先、件名、受信通知有無の3つの引数しか指定できず、Ccは指定できません。


(参考)

VBA資料編1 組み込みダイアログボックス一覧


xlDialogSendMail以外の方法でCcの指定ができる方法がありますのでそちらを使用するのがよいかと思います。


(1)Outlookを前提にする場合

OutlookをCOMオブジェクトとして呼び出して制御します。

こちら(Excel VBA質問箱 IV)にサンプルがあります。


(2)使用しているメーラーに依存しない方法

マイクロソフトがVBAなどから呼び出せるよう用意している方法でCDO(Microsoft Collaboration Data Objects)という仕組みがあります。

こちらに詳しい解説があります。

VBA応用(CDOでメール送信)

◎質問者からの返答

takuya_nさん ardarimさん

ご回答ありがとうございました。

Outlookを利用してファイルをメールしたいのですが、ardarimさんより教えていただきました(Excel VBA質問箱 IV)を参考にして以下のようなCodeを作成しました。

Sub Outlookで送る()

'

Set myOutLook = CreateObject("outlook.application")

Set myitem = myOutLook.CreateItem(olmailItem)

'OutLookを起動。

myitem.To = "アドレス"

myitem.CC = "CCアドレス"

myitem.Subject = "件名"

myitem.Body = "本文"

myitem.Display

'myitem.send

Set MyAttachments = myitem.Attachments

MyAttachments.Add "ファイルの指定", 1, 1, "ファイルの表示名"

Set MyAttachments = myitem.Attachments

Set myOutLook = Nothing: Set myitem = Nothing

End Sub

すると”コンパイルエラー 変数が定義されていません”となり、うまくいきませんでした。

大変恐縮ですが、どのようにすればうまくいくか教えていただけますでしょうか。

VBAの初心者なので申し訳ございません。

よろしくお願いいたします。


3 ● tokuya_n
●26ポイント

どの行がエラーだとか、指摘はありませんか?

ただ、私の環境ではコピペしただけで完璧に動作しました。

たぶん、抜粋された部分のソースコードのエラーではないと思われます。


参考までに、私の環境というのは

WindowsXP

Microsoft Office Excel2003

Microsoft Office Outlook2003

です。


ardarim さんが

> (1)Outlookを前提にする場合

と書いておられるように、そのコードはMicrosoft Outlook Object Libraryを使用するものです。

Outlook Express では使用できませんのでご注意。

汎用的なのはCDOを使用する方法です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ