Attachments

指定されたアイテムのすべての添付ファイルを表す Attachments オブジェクトを返します。

構文
Attachments = MailItem.Attachments
引数
MailItem
MailItem オブジェクト
戻り値
Outlook.Attachments オブジェクト

MailItem オブジェクトを返すメソッド・プロパティ

Items.Item メソッド
コレクションから Outlook アイテムを返します。
Application.CreateItem メソッド
新しい Microsoft Outlook アイテムを作成して返します。

プログラム実行例

指定期間に受信したメールの添付ファイルをすべて保存(Outlook)

CONST olFolderInbox = 6

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
DIM Items = Folder.Items

DIM start = "2021/01/01"
DIM end = "2021/01/31"

Items = Items.Restrict("[ReceivedTime] >= '" + start + "' AND [ReceivedTime] <= '" + end + "'")

DIM folderspec = "D:\Desktop\Outlook\"
CreateFolders(folderspec)

DIM row = 1

FOR MailItem IN Items
	FUKIDASI(row + "/" + Items.Count)
	FOR i = 1 TO MailItem.Attachments.Count
		DIM Attachment = MailItem.Attachments.Item(i)
		DIM path = folderspec + Attachment
		path = uniqueFilename(path)
		Attachment.SaveAsFile(path)
		PRINT path
	NEXT
	row = row + 1
NEXT

//////////////////////////////////////////////////
// 【引数】
//   folderspec : 作成するフォルダのパス 
// 【戻値】
//   
//////////////////////////////////////////////////
PROCEDURE CreateFolders(folderspec)
	DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
	folderspec = FSO.GetAbsolutePathName(folderspec)
	IF !FSO.DriveExists(FSO.GetDriveName(folderspec)) THEN EXIT
	DIM parentPath = FSO.GetParentFolderName(folderspec)
	IFB !FSO.FolderExists(parentPath) THEN
		CreateFolders(parentPath)
	ENDIF
	IF !FSO.FolderExists(folderspec) THEN FSO.CreateFolder(folderspec)
FEND

//////////////////////////////////////////////////
// 【引数】
//   path : ファイルのパス 
// 【戻値】
//   重複しないファイル名 
//////////////////////////////////////////////////
FUNCTION uniqueFilename(path)
	DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
	IFB FSO.FileExists(path) THEN
		DIM fol = FSO.GetParentFolderName(path)
		DIM filename = FSO.GetBaseName(path)
		DIM extension = FSO.GetExtensionName(path)
		DIM i = 2
		WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension))
			i = i + 1
		WEND
		RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension)
	ELSE
		RESULT = path
	ENDIF
FEND
    (3) (4) (5) (6) (11) (14) (18) (20)
  1. Outlook.Attachments.Count(20)
  2. Outlook.Attachments.Item(21)
  3. (22)
  4. Attachment.SaveAsFile(23)
解説
  1. 3行目
    DIM Outlook = CREATEOLEOBJ("Outlook.Application")
    Outlookオブジェクトを生成し、 Outlook に代入します。
  2. 4行目
    DIM NameSpace = Outlook.GetNameSpace("MAPI")
  3. 5行目
    DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
  4. 6行目
    DIM Items = Folder.Items
  5. 8行目
    DIM start = "2021/01/01"
    開始日時をstart、終了日時をendに代入。

メソッド

<表示切り替え>

Add
Outlook.Attachments オブジェクトに新しい添付ファイルを生成します。
Item
コレクションからOutlook.Attachments オブジェクトを返します。
Remove
コレクションからオブジェクトを削除します。

プロパティ

<表示切り替え>

ApplicationRead-only
Class
Count
添付されているファイルの数を返します。
Parent
指定されたオブジェクトの親オブジェクトを返します。
Session

参考文献

  1. Attachments オブジェクト (Outlook) | Microsoft Docs