插入模块,把我写的代码拷贝进去,改一下应该是可以的.我刚才又试了,可以保存和打印. Set nmsName = olApp.GetNamespace("GT(sina)")---这个为何要改呢? 不要改代码,把你的收件箱中带附件的邮件之一改成未读(不要太多未读了哦,要不然如果有附件就会全打出来).运行一下代码看看.打印附件,且会在C:\下保存邮件和附件. 不好意思,我这里跟国内有时差,回复问题不会很及时.只有等我下班后有空才上论坛,但一般每天会来看一下啦. 如果你只是保存附件的话,代码应该会更简单, 不用调用DLL.我想下面的代码应该是够的. Sub Savetheattachment() Dim olApp As New Outlook.Application Dim nmsName As Outlook.NameSpace Dim fldFolder As Outlook.Folder Dim vItem As Object Set nmsName = olApp.GetNamespace("MAPI") Set fldFolder = nmsName.GetDefaultFolder(olFolderInbox) If fldFolder.UnReadItemCount > 0 Then For Each vItem In fldFolder.Items If vItem.UnRead = True Then strname = vItem.Subject'这个可不要,注释掉 strname = Replace(strname, "*", "_")'这个可不要,注释掉 strname = Replace(strname, "\", "_")'这个可不要,注释掉 strname = Replace(strname, "/", "_")'这个可不要,注释掉 strname = Replace(strname, "$", "_")'这个可不要,注释掉 strname = Replace(strname, "%", "_")'这个可不要,注释掉 strname = Replace(strname, "!", "_")'这个可不要,注释掉 strname = Replace(strname, "~", "_")'这个可不要,注释掉 strname = Replace(strname, "(", "_")'这个可不要,注释掉 strname = Replace(strname, ")", "_")'这个可不要,注释掉 strname = Replace(strname, "+", "_")'这个可不要,注释掉 strname = Replace(strname, ":", "_")'这个可不要,注释掉 vItem.SaveAs "C:\" & strname & ".txt", olTXT'这个可不要,注释掉 '-----保存附件------- For Each att In vItem.Attachments att.SaveAsFile "C:\" & att.FileName '使用shell print打印文档 ' strFile = "C:\" & att.DisplayName '这个注释掉 ' 下一个文档 ' ReturnVal = ShellExecute(0&, "print", strFile, 0&, 0&, 0&)'这个注释掉 Next '------保存附件-------- vItem.UnRead = False End If Next End If Set fldFolder = Nothing Set nmsName = Nothing End Sub |