使用VBA解压文件时出现运行时错误'91'该如何解决?
运行时错误'91'原因排查与解决方案
运行时错误'91'的本质是对象变量或With块变量未设置,你这段代码触发错误的核心原因是Shell.Application的Namespace方法返回了空对象(Nothing),调用空对象的属性/方法就会触发该错误,具体可能的触发场景和修复方案如下:
常见触发原因
- 路径不合法:
- 压缩包路径
Origen不存在:检查对应路径下是否真的存在PD20210822.zip文件,确认文件名、后缀名没有拼写错误 - 目标解压路径
Destino不存在,或者当前Windows账号没有该路径的写入权限
- 压缩包路径
- 传参类型不匹配:
Shell.Application.Namespace方法要求接收Variant类型的参数,直接传入String类型变量在部分Office版本中会识别失败,返回空对象
修复后的代码
Dim Destino As String Dim Origen As String Dim oAplica As Object Dim objZip As Object Dim objDest As Object Destino = "C:\Users\Oscar Mayorga\Downloads" Origen = "C:\Users\Oscar Mayorga\Downloads\PD20210822.zip" Set oAplica = CreateObject("Shell.Application") ' 提前校验对象是否正常创建,避免报错 Set objZip = oAplica.Namespace(CVar(Origen)) Set objDest = oAplica.Namespace(CVar(Destino)) If objZip Is Nothing Then MsgBox "压缩包路径无效,请检查" Exit Sub End If If objDest Is Nothing Then MsgBox "目标路径无效,请检查" Exit Sub End If objDest.CopyHere objZip.Items
额外说明
如果修复后仍有问题,可以检查压缩包是否损坏、是否被其他程序占用(比如正在被杀毒软件扫描),关闭占用程序后重试即可。
内容的提问来源于stack exchange,提问作者Oscar Mayorga
相关产品推荐
相关产品推荐

