2017-08-04 293 views
0

每天上午12點都會有一封自動電子郵件,附帶有來自具有特定主題的供應商服務的Excel附件。我正在使用規則和代碼來嘗試保存附件並將信息插入到我在收件箱中收到時創建的數據庫中。根據電子郵件主題保存電子郵件附件

我已經嘗試了我在網上找到的代碼,但是我不知道是否因爲我的公司有的網絡/安全設置不工作或者它是否自己編碼。

規則:

enter image description here

CODE:

Public Sub CribMaster2Database(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 

saveFolder = "c:\temp\" 
    If olItem.Subject = "Test" Then 
     For Each objAtt In itm.Attachments 
      objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName 
      Set objAtt = Nothing 
     Next 
    End If 

End Sub 
+0

學習調試的時間!你如何運行代碼?你怎麼知道代碼是否運行?你怎麼知道你有問題?有什麼問題?設置調試點並使用調試器或添加MsgBox語句! 但是......我的第一個真正的問題是'你如何讓你的宏運行?' –

+0

Tun運行這樣的宏,根據你的安全設置,你必須創建一個證書並選擇它來簽署你的'VBA'代碼。查找「VBA項目的數字證書」來創建證書。在「Outlook VBA」中,菜單是「工具/數字簽名」。最後,您必須使用「Outlook規則嚮導」在傳入郵件上觸發您的腳本。 –

+0

使用Outlook中的內置規則和提醒功能 – holi4683

回答

1

將代碼添加到ThisOutlookSession看你抵達的客人文件夾。
CribMaster_ItemAdd每當有東西到達您觀看的文件夾時觸發。

在模塊的頂部:

Dim WithEvents CribMaster As Items 

Const SAVE_PATH As String = "c:\temp\" 

Private Sub Application_Startup() 

    Dim ns As Outlook.NameSpace 
    Set ns = GetNamespace("MAPI") 

    'Change `holi4683` to the name of your account 
    '(should be visible just above your inbox). 
    Set CribMaster = ns.Folders.Item("holi4683") _ 
      .Folders.Item("Inbox").Items 

End Sub 

Sub CribMaster_ItemAdd(ByVal Item As Object) 
    Dim olAtt As Attachment 
    Dim i As Integer 

    With Item 
     For i = 1 To .Attachments.Count 
      Set olAtt = .Attachments(i) 
      olAtt.SaveAsFile SAVE_PATH & olAtt.DisplayName 
      .UnRead = False 
      DoEvents 
     Next i 
    End With 
    Set olAtt = Nothing 

End Sub 

我通常使用規則的郵件移動到子文件夾,看該文件夾 - 意味着我不必擔心會議邀請,對於代碼工作,或手動運行Application_Startup()程序

Set CribMaster = ns.Folders.Item("holi4683") _ 
     .Folders.Item("Inbox") _ 
     .Folders.Item("SubFolder").Items 

重新啓動Outlook:等
要做到這一點,你會改變你的監視文件夾這樣。

+0

所以我不使用規則來觸發腳本了? – holi4683

+0

對不起,看不到你的規則圖片。不,您不需要使用規則,因爲代碼在郵件到達收件箱時會觸發。目前它會觸發所有項目,因此您可能需要設置一個規則,將特定電子郵件移動到另一個文件夾中,並觀察或檢查郵件到達時的主題行。 –

+0

好吧,我改變了規則,把電子郵件放入名爲CribMaster的文件夾中。現在,當我運行代碼時,第10行出現一個錯誤:'運行時錯誤438:對象不支持這個屬性或方法'我在那裏有'Set CribMaster = ns.Folders.Item(「account of name」 ).Folders.Item(「Inbox」)。Folders.Item(「CribMaster」)。Items' – holi4683