私はコーディングが初めてです。件名のキーワードと受信時間を使用して、特定のExcel添付ファイルをOutlookの受信トレイ(「朝のメール」)に保存する方法を知りたい。
同じドライブフォルダーに保存するためのExcel添付ファイル付きの毎日5つの新しいメールを受信します。
受信する時間は、昨夜か今朝早めのいずれかです。
受信した5つのファイルすべての名前と受信時刻は異なります。
受信ボックスは空ではありません。昨日または2週間前に保存した内容を保存したくありません。
Sub SaveAttachments()
Dim ol As Outlook.Application
Dim ns As Outlook.Namespace
Dim fol As Outlook.Folder
Dim i As Object
Dim mi As Outlook.MailItem
Dim at As Outlook.Attachment
Set ol = New Outlook.Application
Set ns = ol.GetNamespace("MAPI")
Set fol = ns.Folders(1).Folders("Morning Emails")
For Each i In fol.Items
If i.Class = olMail Then
Set mi = i
If mi.Attachments.Count > 0 Then
For Each at In mi.Attachments
at.SaveAsFile "C:\Users\nader\OneDrive\Documents\" & _
at.Filename & Format(mi.ReceivedTime, " MM-DD-YYYY")
Next at
End If
End If
Next i
End Sub
「行の試行に失敗しました;オブジェクトが見つかりませんでした」行:
Set fol = ns.Folders(1).Folders("Morning Emails")
、Outlookの受信トレイの下にそのサブフォルダーを作成しましたが。
コードに新しいOutlookアプリケーションインスタンスを作成する必要はありません。
Application
を使用する プロパティを使用して、Outlook VBAマクロでホストアプリケーションインスタンスを取得します。NewMailEx
の取り扱いをお勧めしますApplication
のイベント クラス。このイベントは、Microsoft Outlookによって処理される受信アイテムごとに1回発生します。アイテムは、MailItem
など、いくつかの異なるアイテムタイプのいずれかです。 、MeetingItem
、またはSharingItem
。ザ・EntryIDsCollection
文字列には、そのアイテムに対応するエントリIDが含まれます。NewMailEx
イベントは、受信トレイに新しいメッセージが到着したとき、およびクライアントルールの処理が発生する前に発生します。EntryIDCollection
で返されたエントリIDを使用できます NameSpace.GetItemFromIDメソッドを呼び出してアイテムを処理する配列。