使用VBA

时间:2016-12-20 22:41:02

标签: excel-vba batch-file vba excel

我有一个从VBA调用的.bat文件,当我使用本地文件夹作为路径时它正在工作(例如C:\ Users \ cthoud01 \ Desktop \ my scripts \ scripts)。

但是,如果我使用网络目录中的路径(例如 - H:\ scripts),则会出错。我也尝试将路径替换为“”H:\ scripts \“”“但继续得到相同的错误。我想听听我们的专家是否有任何方法可以完成这项工作。

以下是我收到的错误消息: enter image description here

我正在使用的VBA代码:

Sub test()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim WindowStyle As Integer: WindowStyle = 1
Dim errorCode As Long


Dim pth As String
errorCode = wsh.Run("cmd.exe /k cd """ & "H:\scripts\" & """ && DeleteMatrix.bat", WindowStyle, waitOnReturn)

If errorCode <> 0 Then
    MsgBox "fail, please retry"
    End
End If

End Sub

1 个答案:

答案 0 :(得分:2)

errorCode = wsh.Run("cmd.exe /k cd /d """ & "H:\scripts\" & """ && DeleteMatrix.bat", WindowStyle, waitOnReturn)

查看额外的/d

在MSDos中,每个驱动器都有一个当前目录。

C:\>cd D:\dog
C:\>Copy *.* D:

会将文件复制到d:\ dog目录中。这使打字更容易。没有鼠标或菜单。

Windows只有当前目录的概念(以及每个程序的概念)。

因此,MSDos批处理文件在CMD中保持不变,您必须使用/d告诉Windows您不希望使用CD命令执行MSDos行为。

同样,CMD模拟每个目录的默认驱动器。

这就是过程环境块中的样子

=C:=C:\Users\David Candy\Desktop\Editor\EditorSdi
=D:=d:\~MSSETUP.T