在Vba Excel中提取.rar文件
我在Excel中有一个vba宏,它从sharepoint网站下载一个.rar文件并将其解压缩。下载工作正常,我可以在文件夹中看到下载的文件,但提取文件不起作用。 我将只粘贴提取文件的一部分,因此我的代码如下所示在Vba Excel中提取.rar文件,vba,excel,unrar,Vba,Excel,Unrar,我在Excel中有一个vba宏,它从sharepoint网站下载一个.rar文件并将其解压缩。下载工作正常,我可以在文件夹中看到下载的文件,但提取文件不起作用。 我将只粘贴提取文件的一部分,因此我的代码如下所示 Sub Extract() Dim RarIt As String Dim Source As String Dim Desti As String Dim WinRarPath As String WinRarPath = "C:\Progr
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的方法失败”
有什么建议吗?我需要在代码中更改什么?非常感谢。因为文件名中有空格,我们需要用
Chr(34)
将其括起来:
试试看:
RarIt=Shell(Chr(34)&WinRarPath&“WinRar.exe”&Chr(34)&e&Chr(34)&Source&Chr(34)&“&Chr(34)&Desti&Chr(34),vbNormalFocus)
非常感谢。它起作用了now@Fadi将您的评论作为答案发布;)JuniorDev:对于第二个解决方案,它不起作用,因为Windows无法以本机方式提取rar。@JuniorDev,欢迎您。
Sub Extract2()
Dim strFilePath As String
strFilePath = "C:\Reports\EMEA Load.rar"
Unzip (strFilePath)
End Sub
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(Chr(34) & WinRarPath & "WinRar.exe" & Chr(34) & " e " & Chr(34) & Source & Chr(34) & " " & Chr(34) & Desti & Chr(34), vbNormalFocus)
End Sub