2013-07-05 39 views
9

Tôi đã sao chép mã sau đây trong VBE oulook của tôi, từ một trong các cộng đồng VBA và sửa đổi theo nhu cầu của tôi. Tôi có thể chạy nó bằng F5 và F8. Bây giờ tôi muốn chạy macro này bất cứ khi nào tôi nhận được một email trong thư mục1. Tôi đã thử thiết lập quy tắc nhưng tôi không thể thấy macro được liệt kê trong hộp chọn 'chạy tập lệnh'. Tôi đã kiểm tra rằngTôi không thể thấy macro VBA của mình trong hộp chọn 'chạy tập lệnh'

  1. thiết lập bảo mật macro là chính xác
  2. vĩ mô được trong một mô-đun không trong một lớp học

bạn có thể vui lòng cho tôi biết những gì đang xảy ra sai trong bối cảnh.

Public Sub SaveAttachments() 

    Dim myOlapp As Outlook.Application 
    Dim myNameSpace As Outlook.NameSpace 
    Dim myFolder As Outlook.MAPIFolder 
    Dim yourFolder As Outlook.MAPIFolder 

    Dim myItem As Outlook.MailItem 
    Dim myAttachment As Outlook.Attachment 
    Dim I As Long 

    Set myOlapp = CreateObject("Outlook.Application") 
    Set myNameSpace = myOlapp.GetNamespace("MAPI") 
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox) 
    Set yourFolder = myNameSpace.GetDefaultFolder(olFolderInbox) 

    Set myFolder = myFolder.Folders("folder1") 
    Set yourFolder = yourFolder.Folders("folder2") 

    For Each myItem In myFolder.Items 
     If myItem.Attachments.Count <> 0 Then 
      For Each myAttachment In myItem.Attachments 
       I = I + 1 
       myAttachment.SaveAsFile "C:\arthur\test.csv" 

      Next 
     End If 

     myItem.Move yourFolder 

    Next 
End Sub 

Trả lời

10

Để được công nhận là kịch bản vĩ mô thích hợp cho các Rule Wizard, vĩ mô phải có các thông số mong đợi:

Sub myRuleMacro(item as Outlook.MailItem) 

MSDN article (vẫn còn hiệu lực cho Outlook 2007/2010/2013/2016)

Related article

Các vấn đề liên quan