Microsoft Outlook VBA でサブルーチンを作成して、受信トレイとそのサブフォルダー内のすべてのメッセージを一覧表示する csv ファイルを作成しました。受信トレイを見るだけでマクロが機能するようになりましたが、サブフォルダーをループしようとすると、書き込もうとしているファイルを参照して「不正なファイル名エラー」が返されました。したがって、基本的に、processFolder 関数の「Write #ff」行がエラーを引き起こしています。ファイル名 #ff のスコープについて何か不足しているものはありますか? ありがとう
サブ Response_Log()
Dim myItem As Object
Dim msg As MailItem
Dim myFolder As Folder
Dim mysubfolder As Outlook.Folder
Dim myNamespace As NameSpace
Set myNamespace = Application.GetNamespace("MAPI")
Set myFolder = myNamespace.Folders("My mailbox").Folders("Inbox")
Dim resFile As String
resFile = "myfilepath\Response_Log.csv"
Dim ff As Byte
ff = FreeFile()
Open resFile For Append As #ff
Write #ff, "Sender Name"; "Sender Email Address"; "Received Time"; "Subject"; "Response Status and Response Time"
processFolder myFolder
Close #ff
サブ終了
関数 processFolder (oParent As Outlook.MAPIFolder)
Dim oFolder As Outlook.MAPIFolder
Dim oMail As Object
Dim Respond As String
Dim NoRespond As String
NoRespond = "Not Yet Replied"
For Each oMail In oParent.Items
If TypeOf oMail Is MailItem Then
If Mid(oMail.SenderEmailAddress, 1, 3) <> "/O=" Then
If oMail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10810003") = 102 Or oMail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10810003") = 103 Then
Respond = "Replied on " & oMail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10820040")
Write #ff, oMail.SenderName; oMail.SenderEmailAddress; oMail.ReceivedTime; oMail.Subject; Respond
Else
Write #ff, oMail.SenderName; oMail.SenderEmailAddress; oMail.ReceivedTime; oMail.Subject; NoRespond
End If
End If
End If
Next
If (oParent.Folders.Count > 0) Then
For Each oFolder In oParent.Folders
processFolder oFolder
Next
End If
終了機能