Shell命令excel vba

时间:2015-07-30 16:44:36

标签: excel vba shell excel-vba

我在Excel VBA中执行以下操作时遇到一些问题。目标是运行.sql文件 - 问题在于我认为的Execute Shell

我跑:

Sub RunFile()
    Call ExecuteShell("C:\","LAPBTN1749","filename.sql")
End Sub

Sub ExecuteShell(path As String, hostname As String, file As String)
    Dim retval
    retval = Shell("SQLCMD -E -S " & hostname & "\SQLEXPRESS -i " & path & file, vbMinimizedFocus)
End Sub

它可能不会运行,可能是由于报价。如果是引用,有人可以解释它们是如何工作的,也可以告诉我在哪里可以找到,因为我从来没有正确地理解这一点。

2 个答案:

答案 0 :(得分:1)

如果任何传递的参数包含空格,则可能需要在对Shell的调用中引用它们。 VBA中的报价通过加倍来逃避:

Sub RunFile()
    Call ExecuteShell("C:\","LAPBTN1749","filename.sql")
End Sub

Sub ExecuteShell(path As String, hostname As String, file As String)
    Dim retval
    retval = Shell("SQLCMD -E -S """ & hostname & "\SQLEXPRESS"" -i """ & _
                   path & file & """", vbMinimizedFocus)
End Sub

如果您仍然遇到问题,请尝试Debug.Print第一个Shell参数并在命令提示符下“手动”运行它。

答案 1 :(得分:1)

我同意@TimWilliams。我更喜欢将view附加到字符串中,因为这意味着我不必计算我使用的引号数量。代码如下:

Chr$(34)