在Vba Excel中提取.rar文件

问题描述:

我在Excel中有一个vba宏,它从SharePoint站点下载.rar文件并将其解压缩。下载工作正常,我可以看到文件夹中下载的文件,但提取文件无法正常工作。 我会糊提取文件的只是一部分,所以我的代码看起来像这样在Vba Excel中提取.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 

和我打电话,我分这一功能,它工作正常.zip文件但.rar文件返回该错误的功能

“命名空间对象ishelldispatch6的方法失败”

Sub Extract2() 

    Dim strFilePath As String 
    strFilePath = "C:\Reports\EMEA Load.rar" 

    Unzip (strFilePath) 

End Sub 

任何建议,请我需要改变我的代码?非常感谢你。

+1

尝试:'RarIt =壳牌(CHR(34)WinRarPath& “的WinRAR.exe” &CHR(34) “e”&Chr(34)&Source&Chr(34)&“”&Chr(34)&Desti&Chr(34),vbNormalFocus)' – Fadi

+0

非常感谢。它现在正在工作 – JuniorDev

+1

@Fadi发布您的评论作为答案;)JuniorDev:对于您的第二个解决方案,它不起作用,因为Windows本身不能提取rar。 – Veve

因为我们在文件中的名称空间,我们需要通过Chr(34)围住它:

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