Damon Cortesi's blog

Musings of an entrepreneur.

Outlook Macro to Save Attachments From All Selected Items

| Comments

I recently used one of those scanner/copier/fax/do-it-all machines in the office to scan in several documents. Each time you scan in a document or set of documents, they get e-mailed to you as an attachment. To my knowledge, Outlook doesn’t have the ability to save attachments from several messages at once, so I wrote this macro. It will prompt for a foldername, then save all attachments from all currently selected items to that folder. Without further ado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<div class='bogus-wrapper'><notextile><figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
</pre></td><td class='code'><pre><code class=''><span class='line'><font color="#000080"><b>Public Sub </b></font>SaveAllAttachments<font color="#808080">()
</span><span class='line'>
</span><span class='line'>  </font><font color="#000080"><b>Dim </b></font>olTask <font color="#000080"><b>As </b></font>Outlook<font color="#808080">.</font>TaskItem
</span><span class='line'>  <font color="#000080"><b>Dim </b></font>olItem <font color="#000080"><b>As </b></font>Outlook<font color="#808080">.</font>MailItem
</span><span class='line'>  <font color="#000080"><b>Dim </b></font>olExp <font color="#000080"><b>As </b></font>Outlook<font color="#808080">.</font>Explorer
</span><span class='line'>  <font color="#000080"><b>Dim </b></font>olApp <font color="#000080"><b>As </b></font>Outlook<font color="#808080">.</font>Application
</span><span class='line'>  <font color="#000080"><b>Dim </b></font>olAttach <font color="#000080"><b>As </b></font>Outlook<font color="#808080">.</font>Attachment
</span><span class='line'>  
</span><span class='line'>  <font color="#000080"><b>Dim </b></font>objWord <font color="#000080"><b>As Object
</span><span class='line'>  Set </b></font>olApp <font color="#808080">= </font>Outlook<font color="#808080">.</font><font color="#000080"><b>CreateObject</b></font><font color="#808080">(</font><font color="#800000">"Outlook.Application"</font><font color="#808080">)
</span><span class='line'>  </font><font color="#000080"><b>Set </b></font>olExp <font color="#808080">= </font>olApp<font color="#808080">.</font>ActiveExplorer
</span><span class='line'>  
</span><span class='line'>  <font color="#000080"><b>Dim </b></font>cntSelection <font color="#000080"><b>As Integer
</span><span class='line'>  </b></font>cntSelection <font color="#808080">= </font>olExp<font color="#808080">.</font>Selection<font color="#808080">.</font>Count
</span><span class='line'>  
</span><span class='line'>  <font color="#008000"><i>'Declare a variable as a FileDialog object.
</span><span class='line'>  </i></font><font color="#000080"><b>Dim </b></font>fd <font color="#000080"><b>As </b></font>Office<font color="#808080">.</font>FileDialog
</span><span class='line'>  
</span><span class='line'>  <font color="#008000"><i>' Start word if necessary
</span><span class='line'>  </i></font><font color="#000080"><b>Set </b></font>objWord <font color="#808080">= </font><font color="#000080"><b>GetObject</b></font><font color="#808080">(</font><font color="#800000">""</font><font color="#808080">, </font><font color="#800000">"Word.Application"</font><font color="#808080">)
</span><span class='line'>  </font><font color="#000080"><b>If </b></font>objWord <font color="#000080"><b>Is Nothing Then
</span><span class='line'>    Set </b></font>objWord <font color="#808080">= </font><font color="#000080"><b>CreateObject</b></font><font color="#808080">(</font><font color="#800000">"Word.Application"</font><font color="#808080">)
</span><span class='line'>  </font><font color="#000080"><b>End If
</span><span class='line'>  
</span><span class='line'>  </b></font><font color="#008000"><i>'Create a FileDialog object as a File Picker dialog box.
</span><span class='line'>  </i></font><font color="#000080"><b>Set </b></font>fd <font color="#808080">= </font>objWord<font color="#808080">.</font>FileDialog<font color="#808080">(</font>msoFileDialogFolderPicker<font color="#808080">)
</span><span class='line'>  
</span><span class='line'>  </font><font color="#000080"><b>With </b></font>fd
</span><span class='line'>    <font color="#808080">.</font>InitialView <font color="#808080">= </font>msoFileDialogViewList
</span><span class='line'>    <font color="#000080"><b>If </b></font><font color="#808080">.</font>Show <font color="#808080">= -</font><font color="#FF0000">1 </font><font color="#000080"><b>Then
</span><span class='line'>      </b></font>Path <font color="#808080">= </font>fd<font color="#808080">.</font>SelectedItems<font color="#808080">(</font><font color="#FF0000">1</font><font color="#808080">)
</span><span class='line'>    </font><font color="#000080"><b>Else
</span><span class='line'>      MsgBox </b></font><font color="#800000">"error"
</span><span class='line'>      </font><font color="#000080"><b>If </b></font>objWord<font color="#808080">.</font>Documents<font color="#808080">.</font>Count <font color="#808080">= </font><font color="#FF0000">0 </font><font color="#000080"><b>Then
</span><span class='line'>        </b></font>objWord<font color="#808080">.</font>Quit
</span><span class='line'>      <font color="#000080"><b>End If
</span><span class='line'>      Exit Sub
</span><span class='line'>    End If
</span><span class='line'>  End With
</span><span class='line'>  
</span><span class='line'>  If </b></font>objWord<font color="#808080">.</font>Documents<font color="#808080">.</font>Count <font color="#808080">= </font><font color="#FF0000">0 </font><font color="#000080"><b>Then
</span><span class='line'>    </b></font>objWord<font color="#808080">.</font>Quit
</span><span class='line'>  <font color="#000080"><b>End If
</span><span class='line'>  
</span><span class='line'>  </b></font><font color="#008000"><i>' Loop through the selected mail items and save the attachments
</span><span class='line'>  </i></font><font color="#000080"><b>For </b></font>i <font color="#808080">= </font><font color="#FF0000">1 </font><font color="#000080"><b>To </b></font>cntSelection
</span><span class='line'>    <font color="#000080"><b>Set </b></font>olItem <font color="#808080">= </font>olExp<font color="#808080">.</font>Selection<font color="#808080">.</font>Item<font color="#808080">(</font>i<font color="#808080">)
</span><span class='line'>    </font><font color="#000080"><b>For Each </b></font>olAttach <font color="#000080"><b>In </b></font>olItem<font color="#808080">.</font>Attachments
</span><span class='line'>      olAttach<font color="#808080">.</font>SaveAsFile Path <font color="#808080">& </font><font color="#800000">"\" </font><font color="#808080">& </font>olAttach<font color="#808080">.</font>FileName
</span><span class='line'>    <font color="#000080"><b>Next </b></font>olAttach
</span><span class='line'>  <font color="#000080"><b>Next
</span><span class='line'>
</span><span class='line'>End Sub</b></font></font></span></code></pre></td></tr></table></div></figure></notextile></div>

Hope somebody out there finds it useful!

Comments