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
有没有办法自动执行某些查询并将该查询的O/P存储在excel文件中?_Excel_Vba_Oracle_Automation_Toad - Fatal编程技术网

有没有办法自动执行某些查询并将该查询的O/P存储在excel文件中?

有没有办法自动执行某些查询并将该查询的O/P存储在excel文件中?,excel,vba,oracle,automation,toad,Excel,Vba,Oracle,Automation,Toad,我每天执行大约80个查询以进行监视。所有这些都是SELECT查询,我们捕获了大部分计数。这是一项无聊的任务,只是运行查询并在excel文件中手动捕获输出 例如,以下是我的查询及其各自的输出示例: 查询1:从表中选择count*,其中某些条件='True' 产出:985 查询2:从另一个_表中选择count*,其中还有另一个_条件='True' 产出:365 查询80:从另一个_表中选择count*,其中还有另一个_条件='True' 产出:578 我的要求是: 捕获这80个查询的输出,并按一定

我每天执行大约80个查询以进行监视。所有这些都是SELECT查询,我们捕获了大部分计数。这是一项无聊的任务,只是运行查询并在excel文件中手动捕获输出

例如,以下是我的查询及其各自的输出示例:

查询1:从表中选择count*,其中某些条件='True' 产出:985

查询2:从另一个_表中选择count*,其中还有另一个_条件='True' 产出:365

查询80:从另一个_表中选择count*,其中还有另一个_条件='True' 产出:578

我的要求是:

捕获这80个查询的输出,并按一定顺序将它们粘贴到excel文件中。 在Excel中,我已经在单元格中设置了标题条件。因此,我希望每个查询的输出都映射到与标题条件对应的特定单元格

有没有办法让这项无聊的任务自动化,或者说我是一个永远被困在机器人里的人


PS:我正在使用Toad for Oracle v 12.9.0.71数据库

就像Tim说ADO是您在这里的最佳选择一样。幸运的是,我只能自己做这件事,所以希望这件事对你有用

Sub SQLQuery(sqlServer As String, strDatabase As String, strQuery As String, _
exportLocation As Variant, strUserId As String, strPassword As String)

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset

Set conn = Nothing
Set rs = Nothing

'create the Connection and Recordset objects
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset

'open the connection
conn.Open _
    "Provider=SQLOLEDB;" & _
    "Data Source=" & sqlServer & ";" & _
    "Initial Catalog=" & strDatabase & ";" & _
    "User ID=" & strUserId & ";" & _
    "Password=" & strPassword & ";" & _
    "Trusted_Connection=" & "True" & ";"

'execute
Set rs = conn.Execute(strQuery)

'check if data exists
If Not rs.EOF Then

    'if so, copy to location
    exportLocation.CopyFromRecordset rs

    'close the recordset
    rs.Close

End If

'clean up
conn.Close
Set conn = Nothing
Set rs = Nothing

End Sub
使用此子例程的示例如下:

Call SQLQuery( _
    oSERVER, _
    oDB, _
    "SELECT count(*) from table WHERE certain_condition = 'True'", _
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1), _
    oUSER, _
    oPW)

仅供参考,您可能必须在参考中启用Microsoft ActiveX Data Objects 2.8库,才能使其正常工作。

您完全可以使用VBA和ADO实现这一点。