私はこれを調べるのに多くの時間を費やしましたが、まだ完全な答えを見つけていません。私が探しているのは、Outlook から最新の 100 通の電子メールを取得し、それらを Excel ワークブックに貼り付けることです。それを達成したコード (いくつかの異なる Web サイトから借用したもの) を作成しましたが、「最新」の部分がありません。
このコードを Excel で実行すると、指定した情報を含む 101 行が出力されます。しかし、最新の電子メールではそうではありません。下の画像を見ると、現在の時刻は午後 7 時 18 分ですが、Excel にインポートされた電子メールは今日とその前の午後 2 時 17 分からのものです。(プライバシー上の理由から、他の列を黒く塗りつぶしました)
もともと、メールは 2014 年 5 月のあるランダムな日からのみ貼り付けられていました。Outlook 2013 で自分のアカウントを削除して再度追加したところ、数か月前ではなく、今日の午後 2 時 17 分に Excel コードが取得し始めました。それに基づいて、これは、アカウントが Outlook にリンクされたときに作成された PST ファイルのみを読み取るコードと関係があると思いますが、完全にはわかりません。
私はこの問題を広範囲にグーグルで検索しましたが、誰も同じ問題を経験していないようです. コードを変更して最新の電子メールのみを取得する方法があるかどうかを知りたいだけです。元の PST ファイルにあるアーカイブされた電子メールを取得したくありません。コードが実行されるたびに PST ファイルを再構築する方法はありますか? アーカイブされたファイルではなく、アクティブな Outlook ウィンドウからコードを読み取る方法はありますか? どんなアドバイスでも大歓迎です。
これが私のコードです:
Sub Test()
'Dim objOL As Object
'Set objOL = CreateObject("Outlook.Application")
Dim objOL As Outlook.Application
Set objOL = New Outlook.Application
Dim OLF As Outlook.MAPIFolder
Set OLF = GetObject("", "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
Dim CurrUser As String
Dim EmailItem
Dim i As Integer
Dim EmailCount As Integer
Dim WS As Worksheet ' assigns variable WS to being a new worksheet
Application.ScreenUpdating = False
Set WS = Sheets.Add(After:=Sheets(Worksheets.Count)) ' creates a new worksheet
ActiveSheet.Name = "List of Received Emails" ' renames the worksheet
' adds the headers
Cells(1, 1).Formula = "From:"
Cells(1, 2).Formula = "Cc:"
Cells(1, 3).Formula = "Subject:"
Cells(1, 4).Formula = "Date"
Cells(1, 5).Formula = "Received"
With Range("A1:E1").Font ' range of cells and the font style
.Bold = True
.Size = 14
End With
EmailItemCount = OLF.Items.Count
i = 0
EmailCount = 0
' reads e-mail information
While i < 100
i = i + 1
With OLF.Items(i)
EmailCount = EmailCount + 1
Cells(EmailCount + 1, 1).Formula = .SenderName
Cells(EmailCount + 1, 2).Formula = .CC
Cells(EmailCount + 1, 3).Formula = .Subject
Cells(EmailCount + 1, 4).Formula = Format(.ReceivedTime, "mm/dd/yyyy")
Cells(EmailCount + 1, 5).Formula = Format(.ReceivedTime, "hh:mm AMPM")
End With
Wend
Set OLF = Nothing
Columns("A:D").AutoFit
Range("A2").Select
Application.StatusBar = False
End Sub
PS Excel ワークブックで Microsoft Outlook 15.0 Object Library 参照を有効にしています。
