I am trying to move email from one pst to another.
Sample code from here.
The important part of the code, which moves the message:
If objVariant.Class = olMail Or objVariant.Class = olMeetingRequest Then
' This is optional, but it helps me to see in the
' debug window where the macro is currently at.
Debug.Print objVariant.SentOn
' Calculate the difference in years between
' this year and the year of the mail object.
intDateDiff = DateDiff("yyyy", objVariant.SentOn, Now)
' Only process the object if it isn't this year.
If intDateDiff > 0 Then
' Calculate the name of the personal folder.
strDestFolder = "Personal Folders (" & _
Year(objVariant.SentOn) & ")"
' Retrieve a folder object for the destination folder.
Set objDestFolder = objNamespace.Folders(strDestFolder).Folders("Inbox")
' Move the object to the destination folder.
objVariant.Move objDestFolder
' Just for curiousity, I like to see the number
' of items that were moved when the macro completes.
lngMovedMailItems = lngMovedMailItems + 1
' Destroy the destination folder object.
Set objDestFolder = Nothing
End If
Now, problem is, when it moves to the destination folder, only message headers are visible, message body comes blank in MS outlook.
I’d like to give a better idea of what I am talking about, by showing the images of before move email and after move email.


On further investigating, I found message size remain same, but MS Outlook is not able to display the body of that message.
When, I move a message manually, either via Drag and drop or copy paste, message remains fine. I am able to see Message body.
I have duplicated your code and environment as closely as I can. I have created a PST file named “Personal Folders (2011)”. I have used the same method of locating the destination folder as in your code. But I cannot duplicate the error you report. My moved messages display as I would expect.
Microsoft Visual Basic Help for BodyFormatProperty says:
However, I do not believe this text. I have encountered cases where the BodyFormat property is corrupt until the body is accessed. If Outlook only looks for the body if the BodyFormat property has a valid value, you would get the symptoms you describe. This is why I wish to know (1) if the uncorrupted body is actually present in the moved messages and (2) if accessing the bodies programmatically fixes the problem.
Please run the following macros (or something like them) and report the nature of the output.
For valid messages, these macros will output something like the following to the immediate window:
What I hope is that you get output like this. That is, I hope the message bodies are present and correct. I further hope that having accessed the bodies, Outlook can display them. If I am right, you could try accessing the bodies before moving them. Failing that, you would need a routine to access the newly moved messages but without the display.