有沒有一種方法可以使用VBA來搜索SQL表,並返回一個是/否的結果,如果在Excel中的單元格包含在SQL表中找到相同的數據?將Excel值與SQL表If語句進行比較。
我有Excel表中的客戶記錄,我需要比較記錄ID(A1)如果存在匹配,我需要將單元格與「客戶」表進行比較,如果有的話......我需要一些如果值存在或不存在,則從sql輸出。
例子: 如果Cell.A1是= SQLTableA 然後「是」 其他 「不」
我覺得像我靠近,但不能從SQL輸出的權利。
enter code here
Option Explicit
Dim cell As Range
Dim CustRow As Range
Const SQLConStr As String = "Driver={SQL Server} ;Server=<svrname>;Database=CustData; UID=user; PWD=<pass>"
Sub connectTODB()
Dim CustDataConn As ADODB.Connection
Dim CustDataCMD As ADODB.Command
Dim rs As ADODB.Recordset
Set CustDataConn = New ADODB.Connection
Set CustDataCMD = New ADODB.Command
Set rs = New ADODB.Recordset
CustDataConn.ConnectionString = SQLConStr
CustDataConn.Open
CustDataCMD.ActiveConnection = CustDataConn
Dim CustValue As String
CustValue = "ACP"
Dim strSQL As String
strSQL = "SELECT * FROM [CustData].[dbo].[CustomerData] WHERE (CustomerData.Client='" & CustValue & "')"
With rs
.ActiveConnection = CustDataConn
'open strsql
'.Open "IF EXISTS(SELECT * FROM [CustData].[dbo].[CustomerData] WHERE CustomerData.Client = 'ACA') Print 'Yes' Else Print 'No'" '(notworking)
'.Open "IF EXISTS(SELECT Client FROM CustData.dbo.CustomerData WHERE CustomerData.Client = 'hdh') Print 'Yes' Else Print 'No'" '(notworking)
.Open "IF EXISTS(SELECT Client FROM CustData.dbo.CustomerData WHERE CustomerData.Client = 'hdh')"
Workbooks("<file>.xlsm").Worksheets("CustOutput").Range("A2").CopyFromRecordset rs
.Close
End With
CustDataConn.Close
Set rs = Nothing
Set CustDataConn = Nothing
End Sub
是你可以做到這一點。我會在Excel中爲命名單元拍攝,並存儲proc電話 – Drew
我只寫了這些[這裏](http://stackoverflow.com/a/33489270)之一。由於它得到了大量的審查,我不喜歡做另一個。 – Drew
你想用'IF EXISTS(SELECT')做什麼?如果你只想將一個值複製到一個單元格中 - 你不需要'copyfromrecordset'。只要讓你的連接字符串正確,並且查詢使用然後將'rs!YourFieldName'分配給單元格 – dbmitch