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

时间:2012-01-30 17:01:00

标签: excel vba host-object

好的,

所以我冒了很多脚本,这些脚本是由我的组织中的团队生成的,然后需要通过SQLPlus进行处理

基本上我们/我用脚本位置获取大量电子邮件@Z:/aFolder/aScript.sql;

然后我们必须通过打开SQLPlus并将文件位置粘贴到“@Z:/aFolder/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:/aFolder/aScript.sql;“

我是否错过了一个特殊角色或其他东西?

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

非常感谢任何输入,谢谢。

2 个答案:

答案 0 :(得分:1)

好的,现在已经解决[以某种方式]

我正在做的是将文件位置参数传递给.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 

完成:)

答案 1 :(得分:0)

尝试引用路径?

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