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