回答編集履歴

2

列挙を行うサンプルを追加

2020/04/17 09:28

投稿

imihito
imihito

スコア2166

test CHANGED
@@ -45,3 +45,111 @@
45
45
 
46
46
 
47
47
  Outlookの要素には様々な種類があるため、型を固定すると上手く行かない場面もあるかと思いますが、処理を作る段階では型を明示してしまった方がやりやすいでしょう。
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
55
+ 参考:For EachおよびFor Nextによる列挙
56
+
57
+
58
+
59
+ ```vba
60
+
61
+ 'Outlookで開いているメールの添付ファイルの中で、任意の文字列を含むファイルのみ、所定のフォルダに保存するマクロを組みたい
62
+
63
+ 'https://teratail.com/questions/254179
64
+
65
+ Sub SaveAttachmentFile3()
66
+
67
+
68
+
69
+ 'ファイルを保存したいフォルダ
70
+
71
+ Dim destFolderPath As String
72
+
73
+ destFolderPath = "C:\Users\Atsuki\Desktop\新しいフォルダー (2)\"
74
+
75
+
76
+
77
+ '今閲覧中のオブジェクトを取得(メールなど)
78
+
79
+ Dim objItem As Object
80
+
81
+ Set objItem = Application.ActiveInspector.CurrentItem
82
+
83
+
84
+
85
+ '保存するファイルのフルパス
86
+
87
+ Dim fullFileName As String
88
+
89
+
90
+
91
+ 'For Each の場合
92
+
93
+ Dim at As Outlook.Attachment
94
+
95
+ For Each at In objItem.Attachments
96
+
97
+ Debug.Print at.FileName
98
+
99
+
100
+
101
+ If at.FileName Like "DRF####.xlsx" Then
102
+
103
+
104
+
105
+ fullFileName = destFolderPath & at.FileName
106
+
107
+
108
+
109
+ 'at.SaveAsFile fullFileName
110
+
111
+ End If
112
+
113
+ Next at
114
+
115
+
116
+
117
+
118
+
119
+ 'For Next の場合
120
+
121
+ With objItem.Attachments
122
+
123
+
124
+
125
+ Dim i As Long
126
+
127
+ For i = 1 To .Count
128
+
129
+ Debug.Print .Item(i).FileName
130
+
131
+
132
+
133
+ If .Item(i).FileName Like "DRF####.xlsx" Then
134
+
135
+
136
+
137
+
138
+
139
+ fullFileName = destFolderPath & .Item(i).FileName
140
+
141
+
142
+
143
+ '.Item(i).SaveAsFile fullFileName
144
+
145
+ End If
146
+
147
+ Next i
148
+
149
+
150
+
151
+ End With 'objItem.Attachments
152
+
153
+ End Sub
154
+
155
+ ```

1

誤記修正。

2020/04/17 09:28

投稿

imihito
imihito

スコア2166

test CHANGED
@@ -18,9 +18,11 @@
18
18
 
19
19
 
20
20
 
21
- 上記の「~s」となっていれば要素の集合、
21
+ 上記の
22
22
 
23
+ 「~s」となっていれば要素の集合、
24
+
23
- 「~s」には集合の中のを一つ取り出すItem(Index)というプロパティやメソッドがある
25
+ 「~s」には集合の中の要素を一つ取り出すItem(Index)というプロパティやメソッドがある
24
26
 
25
27
  という話は、Outlookに限らずVBAのほとんどのオブジェクトで言える話となります。
26
28
 
@@ -38,4 +40,8 @@
38
40
 
39
41
 
40
42
 
43
+ ![イメージ説明](bc7fab3e648afd9234a3b75e9420b5d3.png)
44
+
45
+
46
+
41
47
  Outlookの要素には様々な種類があるため、型を固定すると上手く行かない場面もあるかと思いますが、処理を作る段階では型を明示してしまった方がやりやすいでしょう。