我有一堆文件,我每天都會掃描並保存。我使用的掃描儀機器以PDF格式將掃描後的文件發送到我的收件箱,然後我打開電子郵件,保存PDF文件,並刪除電子郵件,我重複這個操作幾百次,如果我將它節省了很多時間可以自動執行此過程。vba腳本從Outlook保存所有附件(PDF)然後刪除電子郵件
所以我在尋找一個VBA腳本爲Outlook即會
- 保存在我的收件箱的文件夾中的所有附加的PDF文件,然後
- 刪除電子郵件。
我已經看到了很多的貼子在網上,解決類似的腳本,但迄今爲止我見過的一切只會做了手術的第一部分,做同樣的事情,也不會成爲PDF的工作。
在做了一些搜索之後,我在網上發現了一些代碼,它與我正在尋找的代碼類似。我調整它到我想要它做的,並想出了這個:
Sub getAttachmentsAndDelete()
Dim olFolder As Outlook.MAPIFolder
Dim msg As Outlook.MailItem
Dim msg2 As Outlook.MailItem
Dim att As Outlook.Attachment
Dim strFilePath As String
Dim strTmpMsg As String
Dim fsSaveFolder As String
fsSaveFolder = "C:\Users\MikeJones\Documents\Scanned\"
'path for creating attachment msg file for stripping
strFilePath = "C:\Users\MikeJones\Documents\Scanned\temp"
strTmpMsg = "KillMe.msg"
'My testing done in Outlok using a "temp" folder underneath Inbox
Set olFolder =
Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
Set olFolder = olFolder.Folders("scanned")
If olFolder Is Nothing Then Exit Sub
For Each msg In olFolder.Items
If msg.Attachments.Count > 0 Then
While msg.Attachments.Count > 0
bflag = False
If Right$(msg.Attachments(1).FileName, 3) = "msg" Then
bflag = True
msg.Attachments(1).SaveAsFile strFilePath & strTmpMsg
Set msg2 = Application.CreateItemFromTemplate(strFilePath &
strTmpMsg)
End If
If bflag Then
msg2.Attachments(1).SaveAsFile fsSaveFolder &
msg2.Attachments(1).FileName
msg2.Delete
Else
sSavePathFS = fsSaveFolder & msg.Attachments(1).FileName
msg.Attachments(1).SaveAsFile sSavePathFS
End If
msg.Attachments(1).Delete
Wend
msg.Delete
End If
Next
End Sub
這是有點古怪,但完成工作。我遇到的唯一問題是它一次只能提取幾個電子郵件/文件,所以我重複了幾次循環,現在一次點擊就能處理大約150封電子郵件。
最後的評論沒有任何意義。它不會影響附件的文件類型。任何將附件保存到文件系統目錄的代碼都可以與附加的pdf文件一起使用。 – jsotola
頁面上的「相關」部分有大量的工作示例。嘗試其中之一。 –
https://stackoverflow.com/a/43180639/4539709 – 0m3r