Link to home
Start Free TrialLog in
Avatar of Boyderama
Boyderama

asked on

Extract multiple embedded MSG files from a Word document.

Hello all :)

Hope someone can help.

I have a Word document which is currently version 2003 but can be saved in 2007 (.docx). Within the document are around 900 .msg files which now need to be extracted into a folder. I've tried highlighting them all and copy/paste into a folder but all I get is a Scrap file. If I select each one and copy/paste then it saves correctly.

Obviously, manually selecting each one and copy/pasting will take ages. I've also tried saving the document as a .docx and renaming it to a ZIP file in-order to look at the contents. However, the embedded .msg files are showing as .bin files.

I'd guess that the only way to do this is to code some sort of macro which can highlight, copy, paste (to folder) and highlight next one and repeat.

Can anyone assist me further?

Please note: these .msg files are actually Outlook contact cards. When you double click them they do open correctly in Outlook as a contact card. Just in case this is important.

Many thanks in advance :)
Avatar of Dave
Dave
Flag of Australia image

Can you pls post an example - ie with just a few of the addresses

Regards

Dave
Avatar of Boyderama
Boyderama

ASKER

Attached as requested. Thanks!
Example.doc
I ran this code over the sample file an it extrcated all four msg's into a directory, C:\mytmp

to run the code
Tools .. Macros .. Macro
and click
Runme

pls alter your folder path first

I did set a reference to the Outlook Object
- press ALt & F11
- Tools ... References
- tick the box next to Microsoft Outlook XX object Library

This reference should be set already  when you open the altered sample file below

Cheers

Dave

Sub RunMe()
    Dim olApp As Outlook.Application, x As Outlook.Inspector
    Set olApp = New Outlook.Application
    For Each obj In ActiveDocument.InlineShapes
        Set objole = obj.OLEFormat
        objole.DoVerb (wdOLEVerbShow)
        Set x = olApp.inspectors(1)
        'alter path below   
        x.CurrentItem.SaveAs "c:\mytmp\" & x.Caption & ".msg"
        SendKeys "{ESC}"
        x.Close (olDiscard)
    Next
End Sub

Open in new window

Example-1-.doc
I'm getting an error:

Microsoft Visual Basic

"Array index out of bounds."

Tried this in Office 2007 running on Vista and Office 2003 running XP in a VM.

I'd created a folder called c:\mytmp and double checked Microsoft Outlook 12 object Library was ticked. (11 for Office 2003).

Any ideas? Thank you very much for your help so far. Very kind :)
ASKER CERTIFIED SOLUTION
Avatar of Dave
Dave
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Fantastic! It failed a few times as some of the contact names had a \ or / in them. It was trying to name the file with an illegal symbol. Once I'd deleted those symbols it worked without a problem.

Dave, thank you very much for taking your time to help me. Not only did you save me a great deal of time by automating the process you also taught me some VB code :)

Brilliant! Quick turnaround and VB code worked a treat. So kind and helpful. Thanks so much!
No probs. :)

I enjoyed this one as it was quite different - my google search turned up a fix for embedded xls objects but there wasn't anything I could find on extracting msg files. So I picked up a few new tricks on this one as well

Cheers

Dave