Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在VBA中使用Windows脚本主机对象模型传递SQLPlus脚本位置_Excel_Vba_Host Object - Fatal编程技术网

Excel 在VBA中使用Windows脚本主机对象模型传递SQLPlus脚本位置

Excel 在VBA中使用Windows脚本主机对象模型传递SQLPlus脚本位置,excel,vba,host-object,Excel,Vba,Host Object,嗯 因此,我对组织中的团队生成的大量脚本进行了haz,这些脚本需要通过SQLPlus进行处理 基本上,我们/我会收到大量带有脚本位置@Z:/a文件夹/aScript.sql的电子邮件 然后,我们必须通过打开SQLPlus并将文件位置粘贴到“@Z:/a文件夹/aScript.sql;”中来分别处理它们 我一直在寻找一种通过c#或VBA实现自动化的方法 我认为通过VBA的Windows脚本宿主对象模型选项是一个很好的选项 例如: Option Explicit Sub SQLPlus(strFi

因此,我对组织中的团队生成的大量脚本进行了haz,这些脚本需要通过SQLPlus进行处理

基本上,我们/我会收到大量带有脚本位置@Z:/a文件夹/aScript.sql的电子邮件

然后,我们必须通过打开SQLPlus并将文件位置粘贴到“@Z:/a文件夹/aScript.sql;”中来分别处理它们

我一直在寻找一种通过c#或VBA实现自动化的方法

我认为通过VBA的Windows脚本宿主对象模型选项是一个很好的选项

例如:

Option Explicit 

Sub SQLPlus(strFilePath) 

    Dim WShell As New WshShell 
    WShell.Run "sqlplus username/pass...@serverlocation.com " & strFilePath 

End Sub 

Sub test() 

    Call SQLPlus("@Z:/aFolder/aScript.sql;") 

End Sub 
唯一的问题是我在传递最后一个文件位置时出错:“SP2-0310:无法打开文件位置”Z:/a文件夹/aScript.sql;"

我是不是错过了一个特别的角色

我将@符号传递到字符串中,但在命令行上无法识别它


非常感谢您的任何意见。

是否尝试引用路径

WShell.Run "sqlplus username/pass...@serverlocation.com """ & _
             strFilePath & """"  

好了,现在[以某种方式]解决了这个问题

我要做的是将file location参数传递给.bat文件

因此,我有一个.bat文件OracleSQL.bat,其中包含以下代码:

@echo off 
sqlplus username/password@serverlocation.com @%1 
exit; 
现在,我可以使用file参数向外推出批处理文件:

Dim strBatchName As String 

strBatchName = "C:\location\of\bat\OracleSQL.bat Z:/aFolder/aScript.sql" 
Shell strBatchName 

完成:)

抱歉,我忘了提及我也厌倦了这种方法,但没有成功。我在你的另一个问题中看到了这一点,但你没有详细说明“不成功”的实际含义……嗨,蒂姆,不成功意味着我遇到了与以前相同的错误。因此我得到了错误:“SP2-0310:无法打开文件位置”Z:/a文件夹/aScript.sql我发现我可以通过bat文件sqlplus用户名来实现/password@serverlocation.com@“Z:\a文件夹\aScript.sql”退出;请注意引号所在的位置,我尝试通过Windows脚本主机对象模型传递相同的引号,并得到相同的错误WShell.Run“sqlplus username/pass...@serverlocation.com@”和Chr(34)以及strFilePath&Chr(34)和WShell.Run“sqlplus username/pass...@serverlocation.com@”和Chr(34)&strFilePath&Chr(34)&Chr(34)仍然会收到相同的错误,现在正在查看将参数传递到.bat文件