vba - 有没有办法让 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
我希望它会检查任一位置然后运行。
解决方案
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
推荐阅读
- php - 在实践中使用 PHP 词典中的“@”是什么意思?
- batch-file - 是否可以将EXE文件转换回Bat
- windows - 查看桌面没有丢失窗口位置
- xamarin - 如何在 Azure 管道上构建 Xamarin.Mac 应用
- ruby-on-rails - 在 Devise Rails 中注册新用户之前更新服装字段
- swift - 如何实例化两个相互依赖的泛型类?
- android - Android webview 无法播放 mp4 格式以外的视频
- c - 8.5 K&R 书中更简单的代码,只有逻辑运算符而不是位运算和逻辑运算符
- angular - Angular 8 部署问题:Uncaught SyntaxError: Unexpected end of input error
- flutter - 如何转换流
列出