2013-07-11 77 views
0

我有一個SQL的查詢,我想把一個VBA代碼放在Excel工作表中。如何使用SQL在VBA代碼中選擇查詢?

我嘗試了下面粘貼的代碼。

Sub Connect2SQLXpress() 

Dim Ors As Object Dim oCon As Object 

Set oCon = CreateObject("ADODB.Connection") 
Set Ors = CreateObject("ADODB.Recordset") 

Set oCon = New ADODB.Connection oCon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI" 
    oCon.Open 
Ors.Source = "Select KeyInstn,LongName,Shortname,Shortestname From New_inst WHERE ......" 

Ors.Open Range("A1").CopyFromRecordset Ors 
Ors.Close oCon.Close 

If Not Ors Is Nothing Then Set Ors = Nothing 
If Not oCon Is Nothing Then Set oCon = Nothing 

有人可以幫我弄清楚是什麼問題?

+0

什麼是錯誤您收到? –

+1

那麼,如果你告訴我們什麼不起作用,這將有很大的幫助。你還沒有說明問題出在哪裏。 「這是一些代碼,怎麼了?」沒有很清楚地描述問題。你可以[編輯]你的問題,並添加一些關於你的實際問題的信息? (對於那些試圖在未來找到類似問題的答案的人會很有幫助。)謝謝。 –

+0

@KenWhite:從看它我猜SQL查詢是錯誤的,並且連接字符串是錯誤的(沒有數據庫或服務器!) –

回答

0

創造了良好的連接字符串試試這個:

  1. 您的桌面(或任何文件夾)
  2. 選擇New>右鍵單擊文本文件在您創建的文件
  3. 單擊鼠標右鍵,並改變它的名字(和擴展)至ConnectionInfo.UDL上的文件
  4. 雙擊ConnectionInfo.UDL和TH應該在Microsoft數據庫中打開 - 核心服務。
  5. 設置你的提供商服務器名數據庫依次點擊文件
  6. 右鍵單擊之前測試連接,這時候選擇與打開它的記事本
  7. 你應該看到一個適當的OLE DB連接字符串,你可以複製到你的VB代碼中。

之後,您需要確保您的SELECT查詢是正確的,方法是在SQL Server Management Services中運行它或查看您獲得結果。

一旦你有一個記錄在Excel中打開,你可以使用範圍對象的CopyFromRecordset方法來轉儲你記錄到Excel

+0

謝謝你的幫助菲利普..! – user2563891

+0

@ user2563891:如果我解決了您的問題,請點擊答案左側投票櫃檯下的綠色複選標記,將其標記爲答案。 –