• ベストアンサー

Outlook VBAについてです!!

アウトルックのVBAについて、教えてください!! アウトルックのVBAについて、 受信と同時に添付ファイル(Excel)をフォルダに自動保存したいのですが下記条件があります。 1.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Aさんのみ   フォルダ;デスクトップの「Aさん勤務管理」フォルダ 2.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Bさんのみ   フォルダ;デスクトップの「Bさん勤務管理」フォルダ  (参考URL http://q.hatena.ne.jp/1218725545) このように2つの条件を入れる場合にはどのように記載すれば 良いのでしょうか? 参考URLにあるものを用いて、1つの設定はできるのですが 2つ目の条件(この場合、Bさんの条件)を追加できません!! 本当に初心者なので、ぜひともお力を貸してください!!

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

こうでしょう For Each mi In mis Set mai = Application.Session.GetItemFromID(mi) '★名前で確認 If mai.SenderName = "Aさん" | mai.SenderName = "Bさん" Then For Each oFile In mai.Attachments '★ファイル名のチェック If InStr(oFile.Filename, "勤怠管理") > 0 Then If mai.SenderName = "Aさん" then objFile.SaveAsFile "マイドキュメントのパス\Aさん" & "\" & oFile.DisplayName else objFile.SaveAsFile "マイドキュメントのパス\Bさん" & "\" & oFile.DisplayName End If Next End If Next

koji1115
質問者

補足

なるほど!ありがとうございます! Cさん、Dさんと続く場合には、 For Each mi In mis Set mai = Application.Session.GetItemFromID(mi) '★名前で確認 If mai.SenderName = "Aさん" | mai.SenderName = "Bさん" | mai.SenderName = "Cさん" Then For Each oFile In mai.Attachments '★ファイル名のチェック If InStr(oFile.Filename, "勤怠管理") > 0 Then If mai.SenderName = "Aさん" then objFile.SaveAsFile "マイドキュメントのパス\Aさん" & "\" & oFile.DisplayName else objFile.SaveAsFile "マイドキュメントのパス\Bさん" & "\" & oFile.DisplayName else objFile.SaveAsFile "マイドキュメントのパス\Cさん" & "\" & oFile.DisplayName End If Next End If Next となる、という事でしょうか?

その他の回答 (1)

回答No.2

あまり詳しくないんで、適当ですが下記のような感じで できるのでは。AさんBさんのアドレス、Aさん用のフォルダパス、Bさん用のフォルダパスはちゃんとしたものを入れてください。 '----------------------------------------- Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) '----------------------------------------- Dim ns As NameSpace Set ns = GetNamespace("MAPI") Dim mf As MAPIFolder Set mf = ns.Folders("個人用フォルダ").Folders("受信トレイ") Dim gf As MAPIFolder Dim mis As Variant mis = Split(EntryIDCollection, ",") Dim mai As MailItem Dim mi As Variant Dim oFile As Object   Dim sAddress As String For Each mi In mis Set mai = Application.Session.GetItemFromID(mi) If mai.SenderEmailAddress = "A-san@foo.bar.ne.jp" or mai.SenderEmailAddress = "B-san@foo.bar.ne.jp" Then For Each oFile In mai.Attachments If InStr(oFile.Filename, "勤怠管理") > 0 Then           sAddress = mai.SenderEmailAddress saveFile oFile, sAddress End If Next End If Next End Sub '----------------------------------------- Sub saveFile(objFile As Object, Sender as String) '-----------------------------------------   If Sender = "A-san@foo.bar.ne.jp" Then   objFile.SaveAsFile "Aさん用のフォルダパス\" & objFile.DisplayName   ElseIf Sender = "B-san@foo.bar.ne.jp" Then     objFile.SaveAsFile "Bさん用のフォルダパス\" & objFile.DisplayName   EndIf End Sub

関連するQ&A

  • アウトルックのVBAについて教えてください!!

    アウトルックのVBAについて、 受信と同時に添付ファイル(Excel)をフォルダに自動保存したいのですが下記条件があります。 1.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Aさんのみ   フォルダ;デスクトップの「Aさん勤務管理」フォルダ 2.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Bさんのみ   フォルダ;デスクトップの「Bさん勤務管理」フォルダ 3.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Cさんのみ   フォルダ;デスクトップの「Cさん勤務管理」フォルダ 4.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Dさんのみ   フォルダ;デスクトップの「Dさん勤務管理」フォルダ 5.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Eさんのみ   フォルダ;デスクトップの「Eさん勤務管理」フォルダ  (参考URL​http://q.hatena.ne.jp/1218725545​) 本当に初心者なので、ぜひともお力を貸してください!!

  • アウトルックのVBA添付ファイルの保存について

    アウトルックのVBAについて、 受信と同時に添付ファイル(Excel)をフォルダに自動保存したいのですが下記条件があります。 1.添付ファイル名:*A日報* (「A日報」を含むファイル名)   差出人:Aさんのみ   フォルダ;デスクトップの「Aさんの日報」フォルダ 2.添付ファイル名:*A議事録* (「A議事録」を含むファイル名)   差出人:Aさんのみ   フォルダ;デスクトップの「Aさんの議事録」フォルダ 3.添付ファイル名:*B日報* (「B日報」を含むファイル名)   差出人:Bさんのみ   フォルダ;デスクトップの「Bさんの日報」フォルダ 4.添付ファイル名:*B議事録* (「B議事録」を含むファイル名)   差出人:Bさんのみ   フォルダ;デスクトップの「Bさんの議事録」フォルダ 5.添付ファイル名:*B報告書* (「B報告書」を含むファイル名)   差出人:Bさんのみ   フォルダ;デスクトップの「Bさんの報告書」フォルダ http://q.hatena.ne.jp/1218725545の方と良く似ているのですが、 同一人物から、ファイル名で保存先を変える方法がどうしても分かりません。。。 どうかよろしくお願いします!!

  • OutlookのVBAについて教えてください

    はじめまして。 Outlookにて仕訳ルールの処理にて 特定のアドレスの方からのメールを仕訳け、さらに 添付ファイルを保存する。という処理を行っています。 添付ファイルの保存自体はネットでのVBAを参考に 作成することができました。 ただ、OutLook起動時に複数件、同じメールがある場合、 一番古いメールの添付ファイルのみが保存されてしまっているようです。 解決方法がわかる方、教えてください。 やりたいことは以下のとおりです。 宜しくお願い致します。 ■実現したいこと ・件名Aのメールの場合:添付ファイルをフォルダーAへ保存 ・件名Bのメールの場合:添付ファイルをフォルダーBへ保存 ・件名Cのメールの場合:添付ファイルをフォルダーCへ保存 ・件名Dのメールの場合:添付ファイルをフォルダーDへ保存 ■OutLookのVBA Public Sub SaveAttachments(objMsg As MailItem) Const SAVE_Dir = "C:\" Dim objFSO As Object Dim objAttach As Attachment Dim strFileName As String Dim c As Integer: c = 1 Dim flg As Integer: flg = 1 Dim SAVE_PATH As String Set objFSO = CreateObject("Scripting.FileSystemObject") ' 件名により、保存先のパスを変更します。 SAVE_PATH = SAVE_Dir If VBA.Right(SAVE_PATH, 1) <> "\" Then SAVE_PATH = SAVE_PATH & "\" Select Case objMsg.Subject Case "件名A" SAVE_PATH = SAVE_PATH & "フォルダーA" Case "件名B" SAVE_PATH = SAVE_PATH & "フォルダーB" Case "件名C" SAVE_PATH = SAVE_PATH & "フォルダーC" Case "件名D" SAVE_PATH = SAVE_PATH & "フォルダーD" Case Else flg = 0 End Select If VBA.Right(SAVE_PATH, 1) <> "\" Then SAVE_PATH = SAVE_PATH & "\" ' 指定のフォルダに添付ファイルを格納 If flg = 1 Then For Each objAttach In objMsg.Attachments With objAttach strFileName = SAVE_PATH & objAttach.FileName .SaveAsFile strFileName End With Next End If End Sub

  • Outlook2007のVBAで

    Outlook2007のVBAで Outlook2007のVBAで件名か本文にAかBの文字列を含んでいるときにアラートを表示させるというマクロを作りたいのですがどのようにすればいいのかわかりません。 あと本文はItem.bodyで件名はItem.Subjectを使ってますがこれでよろしいのですか?

  • VBAに詳しい方に質問致します

    こんにちは! 私は今VBAの学習しています! 質問(1) 「Outlook Express」の 受信メールを「EMLファイル」に変換後、 「Excel VBA」でメールに 添付されている「txtファイル」を 読み込む操作をしたいのですが どのようにコーディングしたら良いのか分かりません… 何方か御享受願います。 質問(2) 参考になるサイトがありましたら サイトのURLも記載して頂いたら嬉しいです。

  • エクセル vba アウトルックで自動メール送信

    vba勉強中です。 初心者のため質問の仕方に不備ありましたらご了承ください。 在庫管理をエクセルで行っています。 使用した日に使用数を入力し当月在庫を管理しているシートがあります。 I列の当月在庫がH列の管理値を下回ったらアウトルックで自動メール送信を考えています。 在庫管理したい品目は40個ほどあります(添付しているファイルは5個としています。) こちらのサイト(https://fastclassinfo.com/entry/vba_outlook_sendmail/)を参考にしていますが、管理値を下回ったらという部分が勉強不足で作成できません。 お手数をおかけしますがお分かりになられる方、よろしくお願い致します

  • 教えて下さい。VBAマクロで困ってます。

    VBAマクロ初心者です。実は、次のようなコードをどのように書けばよいのか教えて下さい。 例えば、 Aは、デスクトップ上のエクセルファイルの"Sheet1"のA1:B4のA列は数値、B列は文字列。 Aをデスクトップ上の別のフォルダーにあるエクセルファイルの"Sheet1"のA1:B4にデータをコピーをするのですが・・・。まったくわかりません。または、説明が下手でやりたい事が伝わらないかもしれませんが、よろしくお願いいたします。

  • Excel VBA でサブフォルダ含むファイル名取得

    勉強不足で申し訳ないですが、以下の処理をExcel VBAでやるにはどうしたらいいでしょうか? 仮に「C:\aaa」をルートフォルダとします。そのルートフォルダ下には「2008年」「2009年」など年の名前を付けたフォルダだけがあり、他に余計なファイル等はありません。そして、その「2008年」など年の名前のフォルダに、雑多なファイルが入っています。大雑把に図にすると、次のような感じです。 C:\aaa ├2008年 │ ├a1.pdf │ └a2.pdf │ └2009年   ├b5.pdf   └b6.pdf そして、添付の図のように、A列には「2008年」などサブフォルダ名が、B列には「a1」などファイル名が出力されるようにしたいのです。なお、 (1)B列のファイル名の拡張子は、消えれば最高ですが、別に消えなくてもいいです。 (2)B列のファイル名をクリックするとファイルが開けるハイパーリンクがあると、嬉しいです。別になくてもいいです。

  • エクセルのVBAでOutlook Expressの操作

    エクセルのVBAでOutlook Expressの操作 顧客情報を管理する上で、メールアドレスの登録が非常に面倒です。 そこで、Outlook Expressで受信したメールアドレスを自動でエクセルに落としたいのですが、 やり方を教えて下さい。出来れば、VBAを使ってやりたいです… イメージしているのは、 (1)件名に「メールアドレス登録」と入力し、本文に名前を入力したものを送る。 (2)メッセージルールで自動振り分けをして、「メールアドレス登録」という件名のメールは1つのフォルダにまとめる。(これは出来ました) (3)エクセルのA列に名前、B列にアドレスをOutlook Expressから自動で入力する。(ここをVBAを使って自動で行いたい) こんな感じなのですが、宜しくお願いします。

  • VBAでのファイル削除処理

    excelの表の第一列目にファイル名が複数(数は任意)かかれたリストがあるとします.この表を表Aと呼ぶことにします. 別にフォルダーがあり,そのフォルダーの中に複数(任意)のファイルが入っているとします.このフォルダーをフォルダーBとします. 次の処理を行うプログラムを考えていますが,VBAで可能でしょうか.できるとすれば,基本的な部分だけでも教えて頂ければありがたいのですが. フォルダーBを指定して,さらに表Aに書かれているxlsファイルを指定して,Bに書かれているファイル名の中に表Aに書かれたファイル名が一致するものがあれば,ファオルダーBの中から削除する.

専門家に質問してみよう