ExcelとOutlookの連携パート3【ファイルを添付する】



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

ExcelとOutlookの連携パート3【ファイルを添付する】

どうも、takaです、今回はExcelとOutlookの連携の三回目です(^^♪

 

【ExcelとOutlookの連携パート1】ではExcelの名簿をもとに一斉にメールを送る方法を

どうもtakaです(^^♪さて、ExcelとOutlookが連携するという結構コアな検索でこのE-VBAにいらっしゃる方が結構お見掛けします(笑)ExcelとOutlookを連携させると何ができる...

 

【ExcelとOutlookの連携パート2】では件名によってメールをフォルダ分けする方法を

ExcelとOutlookの連携 パート2すんごい久しぶりの企画です(笑)確認したら3/19に一度ご紹介しただけだったんですね~長らくお待たせしてしまいまして申し訳ありません。...

 

それぞれご紹介してきました(^^)

そして今回、第三弾は【Excelからファイルを添付する方法】をご紹介します(^^)/

ご注意
※今回の記事ではOfficeソフトである【Outlook】が必要となります。
今回の操作をするには参照設定にて【Microsoft Outlook ##.# Object Library】 (バージョンによる)を設定する必要があります。
参照設定についてはこちらを参考にしてください

 

今回用意するフォーム

今回は簡単にメールフォームを作成してみましたのでそれも一緒に紹介させてください( ^ω^ )

今回は下記のようなフォームを作成いたしました(^^♪TextBoxのオブジェクト名は画像の通りです。

このフォームでは一応【Cc】や【Bcc】も設定ができる用になっています(笑)

ご注意
CcやBccの設定はおまけです、使用する場合は念のためテストしてからお使いください(。-∀-)

用意したコントロール

今回用意したコントロールは

  1. TextBoxコントロール・・6つ
  2. コマンドボタン  ・・・ 2つ

です。適当に作っていたらTextBoxの順番がおかしくなってました(;´∀`)←

ファイルを添付するコード

VBAでOutlookにファイルを添付させるには【Attachmentsオブジェクト】の【Addメソッド】を使用します。Addメソッドを使用する場合は添付ファイルのフルパスでファイルを指定する必要がありますのでご注意ください( ^ω^ )

Private Sub CommandButton1_Click()
'送信ボタンの処理
   On Error GoTo Error1

   Dim trSh As Worksheet
   Dim res As Integer
   Dim oApp As Object
   Dim myNameSpace As Object
   Dim myFolder As Object
   Dim objMAIL As Object
   
   If TextBox4.Value = "" Then
   MsgBox " 宛先が空欄です。"
   Exit Sub
   End If
   
    If TextBox2.Value = "" Then
     res = MsgBox("件名が空欄です、よろしいですか?", vbYesNo)
      If res = vbNo Then Exit Sub
   End If
      Set oApp = CreateObject("Outlook.Application") 'outlook 起動
      Set objMAIL = oApp.CreateItem(0) 'メール作成
      
         objMAIL.To = TextBox4.Value '宛先
         objMAIL.CC = TextBox5.Value 'CC
         objMAIL.BCC = TextBox6.Value 'BCC
         objMAIL.Subject = TextBox2.Value  '件名
         objMAIL.Body = TextBox3.Value '本文
         
         If TextBox1.Value = "" Then
         Else
         objMAIL.Attachments.Add (TextBox1.Value)
         End If
         
         objMAIL.send  'メール送信
    MsgBox "送信しました"
Exit Sub
Error1:     'エラー処理

    MsgBox "エラー番号:" & Err.Number & vbLf & _
    "エラー内容:" & Err.Description & vbLf & _
    "ヘルプファイル名" & Err.HelpContext & vbLf & _
    "プロジェクト名:" & Err.Source, vbOKOnly + vbCritical, "エラー"
    
  Exit Sub
    
    
End Sub
Private Sub CommandButton2_Click()
'添付ボタンの処理
'添付ファイルの指定はフルパスが必要

  Dim objFS           As New FileSystemObject
    Dim strPath         As String
    Dim ofdFolderDlg    As Office.FileDialog

    ' 初期フォルダの設定
    If Len(strPath) > 0 Then
        ' 末尾の"\"削除
        If Right(strPath, 1) = "\" Then
            strPath = Left(strPath, Len(strPath) - 1)
        End If

        ' フォルダ存在チェック
        If Not objFS.FolderExists(strPath) Then
            strPath = ThisWorkbook.Path
        End If
        Set objFS = Nothing
    Else
        strPath = ThisWorkbook.Path
    End If

    ' フォルダ選択ダイアログ設定
    Set ofdFolderDlg = Application.FileDialog(msoFileDialogFilePicker)
    With ofdFolderDlg
        ' 表示するアイコンの大きさを指定
        .InitialView = msoFileDialogViewDetails
        ' フォルダ初期位置
        .InitialFileName = strPath & "\"
        ' 複数選択不可
        .AllowMultiSelect = False
    End With

    ' フォルダ選択ダイアログ表示
    If ofdFolderDlg.Show() = -1 Then
        ' フォルダパス設定
     TextBox1.Text = ofdFolderDlg.SelectedItems(1)
    End If

    Set ofdFolderDlg = Nothing
    Exit Sub
End Sub

 

ダウンロード

当サイトの免責事項をお読みになってからお使いください。

フォロー・チャンネル登録お願いします

VBA以外についてのブログはこちら↓

https://yb-log.com/

■Twitterフォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

3 件のコメント

  • EXCEL OUTLOOK 連携の検索でここにやってたどりつきました。
    会社全体ではJIRAを使って、TASKの管理をしていく方向性のようですが、ちょっと試しに使ってみたところ、TASKをひとつひとつ登録しないといけないようで、ちょっと面倒だなと感じました。ももともと、試験プログラム作成をグループで分担して作業しているのですが、その作業状況の進捗状況がまわりから見えないとの指摘を受けて、進捗状況が計画に対して遅れているのか進んでいるのかわかるようなチャートの作成および、スケジュール管理、個人レベルの達成度・進捗状況、試験プログラム作成に必要な情報が一覧できるテーブルを作成し、それらを計算式で連携し、人が入力するセルを可能な限り最少にするように設計しました。これをJIRAでできるかどうかちょっと見てみたのですが、とても簡単に登録はできそうにありませんでした。もともとそれぞれのTaskのメインとなるものはDRAMのレイアウトから抽出したTEGのモジュールリストです。それはTEXTで吐き出され、それを単にCOPY/PASTEしてEXCELに貼っているだけです。それをいちいちJIRAに登録するのは非常に面倒です。OUTLOOKのTaskで自分のTaskを管理しているので、このEXCEL情報をOUTLOOKのTASKと連携できないかと考えています。VBAは得意なのですが、この連携はやったことがないので、もし過去に経験がありましたら、ぜひ参考にしたいと思い書き込みました。

    • BANDIT様
      立て続けのご返信恐れいます。
      私の勘違いで「表から予定表」への転記と勘違いしてしまいました。
      本日夕方に「表からタスク」への転記に関する記事をUp致します。BANDIT様のご要望に沿うものになるかはわかりませんが、何かのお役に立てれば幸いです。

    • BANDIT様
      このようなブログを見ていただいきありがとうございます。
      大変お恥ずかしながら私は「JIRA」というものを使用した経験がないので、いまいちどのようなものか把握できておりませんが、恐らく本業(プログラマー)の方が使用されているタスク管理ソフトとお察しします。
      さて、内容としては「JIRA」から出力されたExcelの表からOutlookの予定表への転記と解釈でよろしいでしょうか?
      私も予定表の操作は今のところやったことはなかったのですが、お調べし、一応簡単には作成ができましたので、記事として本日中にUpをさせていただきたいと思います。
      おそらく本業の方が見ればすぐ編集等は可能かと思います(*_*;)

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です