0

(更新) - このスクリプトが現在実行される方法は、アクティブな電子メール フォルダー (...@ .com/inbox) または (...@ .com/deleted) にいるときに、その電子メール フォルダーでスクリプトを実行します。そのため、Outlook は、選択された場合にどのメールを自動的に認識しますか。thisemail@thisplace.com を常に実行するようにします。そして、これは Outlook の VBA を通じて実行されています。

そこで、Outlook で選択した電子メール アドレスから受信トレイ フォルダーを Microsoft Excel にエクスポートする、このきちんとした VBA スクリプトを用意しました。私が望むのは、電子メール アドレスがスクリプトにハード コードされるように、これをさらに自動化することです。基本的に、スクリプトを実行するために電子メール アドレスを選択する必要はありません。常に特定の電子メール アドレスでスクリプトを実行したいだけです。これが私のコードです:

Sub Extract()


On Error Resume Next
Set myOlApp = Outlook.Application
Set myfolder = myOlApp.ActiveExplorer.CurrentFolder


Set xlobj = CreateObject("excel.application.14")
Set xlobjWbk = xlobj.Workbooks.Open("c:\Users\(my username)\Desktop\Example.xlsx")
xlobj.Visible = True
xlobj.EnableEvents = True

'Set Heading
xlobj.Range("a" & 1).Value = "Recieved Time"
xlobj.Range("b" & 1).Value = "Sender Email"
xlobj.Range("c" & 1).Value = "Subject"
xlobj.Range("d" & 1).Value = "Sender Name"
xlobj.Range("e" & 1).Value = "Body"

For i = 1 To myfolder.Items.Count
 Set myItem = myfolder.Items(i)
 msgtext = myItem.body

 xlobj.Range("a" & i + 1).Value = myItem.ReceivedTime
 xlobj.Range("b" & i + 1).Value = myItem.SenderEmailAddress
 xlobj.Range("C" & i + 1).Value = myItem.Subject
 xlobj.Range("d" & i + 1).Value = myItem.SenderName
 xlobj.Range("e" & i + 1).Value = msgtext

 Next
End Sub
4

1 に答える 1

1

あなたの例からわかる限り、アクティブな Outlook インスタンスと選択したフォルダー (myOlApp.ActiveExplorer.CurrentFolder) に対してルーチンを実行するとします。

Outlookfolders には id 属性があります。それを使用して、目標を達成できます。-> ActiveExplorer.CurrentFolder.EntryID で取得できます。次に、それを使用します - > Set targetFolder = GetNamespace("MAPI").GetFolderFromID(folderID)

于 2012-08-17T22:59:37.650 に答える