在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
任何建议,请我需要改变我的代码?非常感谢你。
答
因为我们在文件中的名称空间,我们需要通过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
尝试:'RarIt =壳牌(CHR(34)WinRarPath& “的WinRAR.exe” &CHR(34) “e”&Chr(34)&Source&Chr(34)&“”&Chr(34)&Desti&Chr(34),vbNormalFocus)' – Fadi
非常感谢。它现在正在工作 – JuniorDev
@Fadi发布您的评论作为答案;)JuniorDev:对于您的第二个解决方案,它不起作用,因为Windows本身不能提取rar。 – Veve