you can use a windows shell object to unzip
you can use the application_newmail event for it to run automatically
try like
Private Sub Application_NewMail()
Dim i As MailItem, f As Items, a As Attachment
Set f = GetNamespace("Mapi").Folders("Personal Folders").Folders("Inbox").Items
Set i = f.item(f.Count) 'newest arrival
If Not i.SenderName = "mymate" Then Exit Sub ' ignore from everyone else
dest = "c:\temp\xxx\"
xlfile = "myxl.xls" ' change to suit
For Each a In i.Attachments
If LCase(Right(a.FileName, 4)) = ".zip" Then
a.SaveAsFile dest & a.FileName
Set sh = CreateObject("shell.application")
Set n = sh.NameSpace(dest & a.FileName)
For Each fil In n.Items
If LCase(Right(fil.Name, 4) = ".xls") Then
sh.NameSpace(dest).copyhere fil, 4
Kill dest & xlfile ' required as name will not overwrite
Name dest & fil.Name As dest & xlfile
Exit For
End If
Next
End If
Next
End Sub
this is as a whole untested and may contain typos or code errors, change all filenames, extentions and folders to suit, if for any reason the filename of the zipped xls file still exists within the dest folder an overwrite dialog will be raised by the shell object, as coded only the first .xls in the zip file will be extracted (others will be ignored), this can obviously be changed if required, if the xl file is open (or referrenced) in excel an error may occur at trying to kill or rename
if multiple emails arrive at the same time i am not sure if every email fires the newmail event individually or as a batch, if not it would be easy to work around that