Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
使用ADO/VBA/SQL快速检索已关闭的excel工作簿数据_Vba_Ado - Fatal编程技术网

使用ADO/VBA/SQL快速检索已关闭的excel工作簿数据

使用ADO/VBA/SQL快速检索已关闭的excel工作簿数据,vba,ado,Vba,Ado,我将下面的数据表保存在一个文件中。我想在另一个工作表中为“Person”传递一个参数,该工作表返回“Networth”。例如,如果我传递returnvalue2(“标记”),我想返回标量600。有办法做到这一点吗 Function returnvalue2(column As Variant, X As Integer) As Variant Dim sSQLQry As String Dim ReturnArray Dim Conn As New ADODB.conn

我将下面的数据表保存在一个文件中。我想在另一个工作表中为“Person”传递一个参数,该工作表返回“Networth”。例如,如果我传递returnvalue2(“标记”),我想返回标量600。有办法做到这一点吗

Function returnvalue2(column As Variant, X As Integer) As Variant
    Dim sSQLQry As String
    Dim ReturnArray
    Dim Conn As New ADODB.connection
    Dim mrs As New ADODB.Recordset
    Dim DBPath As String, sconnect As String
    variable1 = X
    DBPath = "C:\Users\josep\OneDrive\Documents\networth.test.xlsx"
    
    'THIS WORKS!'=
    'Using MSDASQL Provider
    sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
    
    'Using Microsoft.Jet.OLEDB Provider - If you get an issue with Jet OLEDN Provider try MSDASQL Provider (above statement)
    'sconnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath _
        & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
        
    Conn.Open sconnect
      sSQLSting = "SELECT " & column & " From [Sheet1$] WHERE Networth>" & variable1 & "" 'Your SQL Statement (Table Name= Sheet Name=[DataSheet$])"
        
        mrs.Open sSQLSting, Conn
            '=>Load the Data into an array
            'ReturnArray = mrs.GetRows
                    ''OR''
            '=>Paste the data into a sheet
            ra = mrs.GetRows
        'Close Recordset
        mrs.Close
    
    'Close Connection
    Conn.Close
    returnvalue2 = ra
    
    End Function