首页 > 解决方案 > VBA 有问题。我出现运行时错误“91”。任何想法?

问题描述

我正在尝试使用 VBA 解压缩文件,但出现运行时错误 91。这是我的代码:

Dim Destino As String
Dim Origen As String
Dim oAplica As Object

Destino = "C:\Users\Oscar Mayorga\Downloads"
Origen = "C:\Users\Oscar Mayorga\Downloads\PD20210822.zip"
Set oAplica = CreateObject("Shell.Application")
oAplica.Namespace(Destino).CopyHere oAplica.Namespace(Origen).Items

标签: excelvba

解决方案


更改Destino = "C:\Users\Oscar Mayorga\DownloadsDestino = "C:\Users\Oscar Mayorga\Downloads\"。还将声明更改StringVariant

这是你正在尝试的吗?

Dim Destino As Variant
Dim Origen As Variant
Dim oAplica As Object

Destino = "C:\Users\Oscar Mayorga\Downloads\"
Origen = "C:\Users\Oscar Mayorga\Downloads\PD20210822.zip"
Set oAplica = CreateObject("Shell.Application")
oAplica.Namespace(Destino).CopyHere oAplica.Namespace(Origen).Items

说明:您正在使用后期绑定。要理解这一点,请使用Early Binding,如下所示。设置对Microsoft Shell Controls and Automationfrom的引用Tools | References

在此处输入图像描述

Option Explicit

Sub Sample()
    Dim Destino As Variant
    Dim Origen As Variant
    Dim oAplica As Shell32.Shell

    Destino = "C:\Users\Oscar Mayorga\Downloads\"
    Origen = "C:\Users\Oscar Mayorga\Downloads\PD20210822.zip"
    Set oAplica = New Shell32.Shell
    oAplica.Namespace(Destino).CopyHere oAplica.Namespace(Origen).Items
End Sub

现在,当您在键入括号后按空格键时,您会注意到以下内容

在此处输入图像描述

它期望一个Variant. 可以在Shell.NameSpace 方法中阅读有关它的更多信息

如果上述链接失效

在此处输入图像描述


推荐阅读