我在 Excel 中有一个 vba 宏,它从共享点站点下载一个 .rar 文件并将其解压缩。下载工作正常,我可以在文件夹中看到下载的文件,但提取文件不起作用。我将仅粘贴提取文件的一部分,因此我的代码如下所示
Sub Extract()
Dim RarIt As String
Dim Source As String
Dim Desti As String
Dim WinRarPath As String
WinRarPath = "C:\Program Files\WinRar\"
Source = "C:\Reports\EMEA Load.rar"
Desti = "C:\Reports\"
RarIt = Shell(WinRarPath & "WinRar.exe e " & Source & " " & Desti, vbNormalFocus)
End Sub
所以当我运行它时,它会返回一个消息框“找不到档案”,尽管我可以在文件夹中看到 .rar 文件。
我创建了另一个解决方案,一个解压缩文件的函数
Function Unzip(str_FILENAME As String)
Dim oApp As Object
Dim Fname As Variant
Dim FnameTrunc As Variant
Dim FnameLength As Long
Dim FnamePath As Long
Fname = str_FILENAME
FnamePath = InStrRev(Fname, "\")
FnameTrunc = Left(Fname, FnamePath)
Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FnameTrunc).CopyHere oApp.Namespace(Fname).Items
End Function
我在我的 Sub 中调用此函数,它适用于 .zip 文件但对于 .rar 文件它返回此错误
“命名空间对象 ishelldispatch6 的方法失败”
Sub Extract2()
Dim strFilePath As String
strFilePath = "C:\Reports\EMEA Load.rar"
Unzip (strFilePath)
End Sub
请问有什么建议我需要在我的代码中更改吗?非常感谢。