首页 > 解决方案 > 有没有办法让 VBA 代码检查 WINRAR 的两个不同位置

问题描述

下面的代码提取 rar 文件,但由于我不确定 WinRar 的位置,我需要它来检查两个位置。下面的代码在 WinRarPath 上出现类型不匹配错误。

Sub Extract()

Dim RarIt As String
Dim Source As String
Dim Desti As String
Dim WinRarPath As String

WinRarPath = "C:\Program Files\WinRar\" Or "C:\Program Files (x86)\WinRar\"
Source = "C:\VBA\VBA.rar"
Desti = "C:\VBA\"

RarIt = Shell(Chr(34) & WinRarPath & "WinRar.exe" & Chr(34) & " e " & Chr(34) & Source & Chr(34) & " " & Chr(34) & Desti & Chr(34), vbNormalFocus)

Application.Wait (Now + TimeValue("0:00:02"))

Kill Source

End Sub

我希望它会检查任一位置然后运行。

标签: vbawinrar

解决方案


Sub Extract()

Dim RarIt As String
Dim Source As String
Dim Desti As String
Dim WinRarPath As String
Dim WinRarPathX86 As String
WinRarPath = "C:\Program Files\WinRar\"
WinRarPathX86 = "C:\Program Files (x86)\WinRar\"
Source = "C:\VBA\VBA.rar"
Desti = "C:\VBA\"

If Dir("C:\Program Files\WinRar\", vbDirectory) <> "" Then
        RarIt = Shell(Chr(34) & WinRarPath & "WinRar.exe" & Chr(34) & " e " & Chr(34) & Source & Chr(34) & " " & Chr(34) & Desti & Chr(34), vbNormalFocus)
    Else
        RarIt = Shell(Chr(34) & WinRarPathX86 & "WinRar.exe" & Chr(34) & " e " & Chr(34) & Source & Chr(34) & " " & Chr(34) & Desti & Chr(34), vbNormalFocus)
End If

Application.Wait (Now + TimeValue("0:00:02"))

Kill Source

End Sub

推荐阅读