2017-09-07 70 views
0

我一無所知VBA,我設法拼湊一個非常簡單的宏,讓我另存爲電子郵件通過的規則:展望宏間歇權限錯誤

Sub sTXT(myMail As Outlook.MailItem) 
strname = myMail.Subject 
myMail.SaveAs "C:\Users\ss127w\Box Sync\maildump\" & strname & ".txt", OLTXT 
End Sub 
Sub Test() 
    Call sTXT(ActiveExplorer.Selection(1)) 
End Sub 

這一直致力於完美了許多許多個月,我我一直在出口相同的兩種類型的電子郵件,沒有問題。好了,今天我試圖建立一個不同的電子郵件新的規則和這個宏給了我一個權限錯誤:

Outlook cannot complete the save due to a file permission error. 

我沒有做任何對宏進行任何更改。我開始在隨機的其他電子郵件上測試宏,並注意到它對某些而非其他電子郵件有效。

現在,如果我要手動執行SaveAs,我可以將任何電子郵件保存到宏中定義的文件夾中。

我懷疑在主題行中的特殊字符是造成問題,但我沒有做足夠的試驗和錯誤,真的能夠得出這個結論(主題行中有一個冒號(:))。

讓我知道你在想什麼。

回答

1

I suspect that the special characters in the subject line is causing issues, but I haven't done enough trial and error to really be able to conclude this (the subject line has a colon (:) in it).

你是對的 - 冒號會導致問題。

如果您嘗試使用Windows資源管理器來編輯文件名包含一個冒號,您將收到消息:

A file name can't contain any of the following characters: \/: * ? " < > |

做的就是在你受到任何此類字符轉換爲其他字符的最好的事情,例如而不是

strname = myMail.Subject 

您可以使用

strname = Replace(myMail.Subject, ":", "_") 

改變任何冒號而不是下劃線。

或者你可以去全

strname = Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(myMail.Subject, "\", "_"), _ 
            "/", "_"), _ 
            ":", "_"), _ 
            "*", "_"), _ 
            "?", "_"), _ 
            """", "_"), _ 
            "<", "_"), _ 
            ">", "_"), _ 
            "|", "_") 

,如果你想。顯然,替換角色的選擇取決於你 - 如果你只是想擺脫角色,你甚至可以用""替換它們。

+0

這樣做了,非常感謝。 – 528fb