2017-06-10 4 views
0

VBAでフォルダを作成します。VBAでローカルドライブに作成されたフォルダにOutlookメッセージを保存する

Sub ExtractEmail() 

    Dim OlApp As Outlook.Application 
    Set OlApp = New Outlook.Application 
    Dim Mailobject As Object 
    Dim Email As String 
    Dim NS As NameSpace 
    Dim Folder As MAPIFolder 
    Set OlApp = CreateObject("Outlook.Application") 

    Dim fso As Object 
    Dim fldrname As String 
    Dim fldrpath As String 

    ' Setup Namespace 
     Set NS = ThisOutlookSession.Session 
    ' Display select folder dialog 
     Set Folder = NS.PickFolder 
    ' Create Folder File 
     Set fso = CreateObject("Scripting.FileSystemObject") 

    ' loop to read email address from mail items. 
    For Each Mailobject In Folder.Items 
    fldrname = Mailobject.To 
    fldrpath = "\\abc\" & fldrname 
    If Not fso.folderexists(fldrpath) Then 
     fso.createfolder (fldrpath) 
    End If 

    Set objCopy = Mailobject.Copy 
    objCopy.SaveAs fldrpath, olMSG 

    Next 
    Set OlApp = Nothing 
    Set Mailobject = Nothing 

End Sub 

私はフォルダにメールを保存するために

Mailobject.SaveAs fldrpath, olMSG 

を使用しようとすると、私はファイルに書き込むことはできません。

フォルダを右クリックし、ショートカットメニューのプロパティをクリックしてフォルダのアクセス許可を確認すると、属性は読み取り専用になります。

代替案を教えてもらえますか?

+0

は、あなたが完全なコードを投稿することができます:あなただけのフォルダ名を渡していますか? – 0m3r

+0

読み取り専用の場合は、アクセス権を読み取りと書き込みに変更することを検討してください。 – newguy

答えて

0

SaveAsに完全修飾ファイル名を渡す必要があります。

objCopy.SaveAs fldrpath & "\test.msg", olMSG 
+0

ありがとう!これはうまくいった。 :)あなたはまた、メールの件名に関連してこの動的な方法を教えてくれますか? Subjectname = Mailobject.Subjectという構文を使用しましたが、あなたが言いました "\ test.msg"に収まりません。 –

+0

objCopy.SaveAs fldrpath& "\"&objCopy.Subject、olMSG。しかし、 ":"などの不正な(名前のための)文字がないことを確認する必要があります。 –

0
fldrpath = "\\abc\" & fldrname & 
"\" 
savepath = fldrpath & Mailobject.Subject & Format(Now(), "yyyy-mm-dd- 
hhNNss") 
savepath = savepath & ".msg" 

If Not fso.folderexists(fldrpath) Then 
fso.createfolder (fldrpath) 
End If 


Set objCopy = Mailobject.Copy 
objCopy.SaveAs savepath, olMSG 
+0

このコードは、最後の行でエラー操作が失敗しました。誰かが同じの修正を把握できますか?私はメールをコピーしてセーブパスに貼り付けようとしています。 –

関連する問題