[三流君] −−>
[VBAで楽しく] −−>
[VBA Outlook 操作]
−−> No.078 Outlookでファイルを添付するには?.Attachments.Add
Outlookでファイルを添付するには?.Attachments.Add
メルマガ発行内容
<Outlookでファイルを添付するには?.Attachments.Add>
こんにちは、三流プログラマーKen3です。
今回は、
VBAでOutlookにファイルを添付するには?
です。
/*
* 1.今回のキッカケ
*/
seltaeb@倉敷さん から
>はじめまして
>検索で「Outlookを操作してメールを送りたい」にたどり着き早速メルマガ登録し
>ました
>
>現在1つのBOOKを業者別に複数のBOOKに分割するところまで作成しております
>次のステップとして業者別のBOOKをMailに添付して自動で送ろうと考えています
>メルマガを参考とさせていただき作成したいと思います
>
>あと、ファイル添付の方法が分からないのでご教示ください
>
>よろしくお願いします
----
ご教示かぁ、、、三流作者にはそんなこと言わなくていいのにね。
なんて書いてないで、調べますか。
/*
* 2.ヘルプの探し方
*/
ヘルプで添付をキーワードに調べると。
.Attachments.Add
ってのが見つかる。(ネットでoutlook 添付で探すと一発だけど)
嘘つくなよテメエ、ExcelVBAのヘルプにそんなの無いぞ。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
素人だと思ってバカにしやがって、いつもヘルプ見ろヘルプ見ろってうるせえ。
Excelのヘルプで添付が出てこないから聞いてんだろ。
まぁまぁ、そんなに興奮しないでよ、どこかの危険な掲示板じゃないんだから。
えっと、これ、Outlookを起動してから、Alt+F11押すと、
OutlookのVBA編集画面が出るんですよ。
ここで、F1(ヘルプ)押して添付とキーワード入力をすると、
Attachmentsオブジェクトを見つけることが出来ます。
※outlook2000,20002からで、97は出ません(残念、、、)
↑ヘルプの検索イメージ
さてと、
Attachmentsオブジェクトのヘルプを見ると、
---
アイテムに添付ファイルを追加するには、Add メソッドを使用します。
一貫した結果を得るには、アイテムの Attachments コレクションのオブジェクトを
追加したり削除したりする前に、アイテムを必ず保存します。
次の VBA の例は、新しいメッセージを作成し、Q496.xls ファイルをリンクではなく
添付ファイルとして添付し、その添付ファイルにわかりやすいキャプションを付けます。
Set myOlApp = CreateObject("Outlook.Application")
Set myItem = myOlApp.CreateItem(olMailItem)
myItem.Save
Set myAttachments = myItem.Attachments
myAttachments.Add "C:\My Documents\Q496.xls", _
olByValue, 1, "1996 年の第 3 四半期報告"
---
なんて載ってます。
/*
* 3. 単体テスト
*/
ヘルプでオブジェクトがわかったので、
.Attachments.Add "ファイル名"でいいのかな。
単体のテストプログラムで確認してみる。
Sub testSEND送信()
Dim oApp As Object 'アプリケーションオブジェクト
Dim objMAIL As Object 'メールのオブジェクト
Dim strMOJI As String '本文
'アプリケーションオブジェクトの作成
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strMOJI = "こんにちは" & vbCrLf _
& "プログラマーの愚痴、教えまっせ?" & vbCrLf _
& "三流君です。 www.ken3.org よろしく(笑)"
objMAIL.To = "test@ken3.org" '宛先
objMAIL.Subject = "未承諾広告※(笑)" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.Attachments.Add "e:\work\test.txt"
objMAIL.Send '直接送信箱行き
End Sub |
実行すると、
あれ?
プログラムが自動的に電子メールを送信しようとしています
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
だってさ。※私のExcel2002とOutlook2002の組み合わせではこんな感じでした。
↑警告画面のイメージ
はい を押すと、無事に送信箱に添付ファイル付のメールが保存されました。
まぁ、
.Attachments.Add "ファイル名"
で、添付はできたかぁ。。。
う〜ん、まぁ、ウイルス問題もあるし、こんな感じなのかなぁ。
警告メッセージみて、ウイルスだとか騒がれるのもイヤなので、
.Send を .Display に変えて、確認してもらってから、
ユーザーに送信ボタンを押してもらう(送信ボタンを押しても、送信トレイに行くだけ)
そんな操作に変えてもらうか、、、
※それだと、連続自動実行ができないじゃん、、、
Sub testSEND送信()
Dim oApp As Object 'アプリケーションオブジェクト
Dim objMAIL As Object 'メールのオブジェクト
Dim strMOJI As String '本文
'アプリケーションオブジェクトの作成
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strMOJI = "こんにちは" & vbCrLf _
& "プログラマーの愚痴、教えまっせ?" & vbCrLf _
& "三流君です。 www.ken3.org よろしく(笑)"
objMAIL.To = "test@ken3.org" '宛先
objMAIL.Subject = "未承諾広告※(笑)" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.Attachments.Add "e:\work\test.txt"
objMAIL.Display '編集メッセージの表示 .Sendから変更
'おまけでOutlook表示
Dim myNameSpace As Object
Dim myFolder As Object
Set myNameSpace = oApp.GetNameSpace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダーを指定
myFolder.Display '表示
End Sub |
※もう一工夫必要みたいですね。
/*
* 4.おわりの挨拶
*/
今回は、
・添付付のメッセージをOutlookから送る方法
・ウイルス防止なのか?Outlook2002で送信確認のメッセージが出た
って話でした。
解決してないって?バレた(笑)
拾い読みして、
1つでも何かの参考となれば幸いです。
Excel/Access大好き、三流プログラマーKen3でした。
※評価は↓で投票してね。感想は掲示板かメールでくださいね。
もらった、感想メールです。
In message "QA VBA - No.78",
>たっきーさん <xxxx@xxx.xxx> から
>送信確認メッセージが出るというところですが、某書で見た解決法があります。 .display のあとで
>SendKeys "%s", True
>と入れておくと送信までしてくれるようですよ。ただしOultlookがもたもたしていると"%s"が間に合わないので、個人的には
>If Excel.Application.Wait(Now + TimeValue("0:00:10")) Then
> SendKeys "%s", True
>End If
>などとやってお茶を濁しています。異なる環境でうまくいくかどうか分かりませんがお試しください。(私の環境はExcel2000/Outlook2000です。)
----
なるほど、かわしかたがありそうですね。
フィードバック
VBA系の→[掲示板]←を覗く、質問を書き込む
評価・感想
ページフッター(リンクや広告など)
[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます
広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列
書籍の購入
Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??
コンピュータ書籍の発送がハヤイ専門店
コンピュータの本・専門店
|
※種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり
|
amazon.co.jpでキーワード別チェック
下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・