我在另一个网站上找到了这段代码。它应该在 Outlook 文件夹中找到一封电子邮件并解压缩附件。它使用临时位置来执行此操作。
我使用的是 Outlook 2013,我使用的引用资料是:Visual Basic for Application、Microsoft Outlook 15.0 对象库、OLE 自动化、Microsoft Office 15.0 对象库。我当前正在模块中运行此代码。
Option Explicit
Sub Unzip1()
Dim Inbox As MAPIFolder
Dim SubFolder As MAPIFolder
Dim Atchmt As Attachment
Dim FileName As String
Dim msg As Outlook.MailItem
Dim ns As Outlook.NameSpace '
Dim FSO As Object 'variables for unzipping
Dim oApp As Object
Dim FileNameFolder As Variant
Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
Set SubFolder = Inbox.Folders("ASE")
For Each msg In SubFolder.Items
For Each Atchmt In msg.Attachments
If (Right(Atchmt.FileName, 3) = "zip") Then
FileNameFolder = Environ("USERPROFILE") & "Documents\"
Set oApp = CreateObject("Shell.Application")
oApp.NameSpace(FileNameFolder).CopyHere oApp.NameSpace(Atchmt.FileName).Items
End If
Next
Next
End Sub
我在这一行收到错误“对象变量或 With block 变量未设置”。
oApp.NameSpace(FileNameFolder).CopyHere oApp.NameSpace(Atchmt.FileName).Items
最佳答案
我必须改变
DIm oAPP 作为对象
到
将 oApp 调暗为 Shell
使用“Microsoft Shell 控制和自动化”进行早期绑定(bind)。不知道为什么它提示后期绑定(bind)
关于vba - 解压缩附件 - 运行时错误 '91',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30786473/