[三流君] −−> [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です。) ---- なるほど、かわしかたがありそうですね。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]