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