HI,大家好,我是星光,今天給大家聊一下如何在Excel中使用SQL語言。這個問題我們在「零基礎(chǔ)學(xué)SQL in Excel」系列圖文的第一章中有講過,不過公眾號后臺總是收到類似的提問,所以就再集中說一次。 在Excel中使用SQL語言一般有三種方法▼ 第一種是MS Query法,很少用,越來越少用,略。 第二種是OLE DB法,通常指的也就是透視表法。 操作演示動畫如下..▼ 圖文說明如下..▼ 在Excel的【數(shù)據(jù)】選項卡下單擊【現(xiàn)有鏈接】命令,在打開的對話框中,單擊【瀏覽更多】,選取目標(biāo)文件后,依次單擊【確定】,得到如下圖所示的【導(dǎo)入數(shù)據(jù)】對話框。 單擊【屬性】按鈕,打開【連接屬性】對話框,切換到【定義】選項卡,即可在【命令文本】編輯欄中編寫SQL語句,最后【確定】執(zhí)行即可。如下圖所示。 …… 這種方法通常搭配數(shù)據(jù)透視表(圖一的顯示方式選擇【數(shù)據(jù)透視表】),此時SQL獲取的記錄集會自動成為透視表的緩存數(shù)據(jù)源。 此外也可以搭配Power Pivot(Excel版本2013及以上),勾選圖一的【將此數(shù)據(jù)添加到數(shù)據(jù)模型】)。 對于沒有VBA基礎(chǔ)的朋友來說,通常推薦這種方法,只要會寫SQL查詢語句,就可以直接使用了。 不過——咱們的系列文章【零基礎(chǔ)學(xué)SQL in Excel教程】主要是使用的第3種方法,也就是VBA+ADO+SQL。 和第2種方法相比較,該法的優(yōu)點在系列文里已經(jīng)說過很多了,其實最重要的就兩點,掰手指頭: 1 2 對于VBA代碼連面都不熟的朋友而言,是不是就不能使用VBA執(zhí)行SQL了呢? 并不是。 VBA執(zhí)行SQL語句有一個固定的套路。 哪怕你連VBA代碼一句都看不懂也沒關(guān)系,只要知道如何復(fù)制運(yùn)行VBA代碼(如何運(yùn)行VBA代碼?其實很簡單),以及知道在哪里寫入SQL語句就可以了。
代碼如看不全,可以左右拖動..▼ Sub ByADO_SQL() Dim cnADO As Object Dim rsADO As Object Dim strSQL As String Dim i As Long Set cnADO = CreateObject('ADODB.Connection') Set rsADO = CreateObject('ADODB.Recordset') cnADO.Open 'Provider=Microsoft.ACE.OLEDB.12.0;' _ & 'Extended Properties=Excel 12.0;' _ & 'Data Source=' & ThisWorkbook.FullName strSQL = 'SELECT * FROM [A$] ' '//此處寫入SQL代碼 Set rsADO = cnADO.Execute(strSQL) '//將工作表名稱修改為實際放置查詢數(shù)據(jù)的工作表名稱▼ Worksheets('工作表名稱').Select Cells.ClearContents For i = 0 To rsADO.Fields.Count - 1 Cells(1, i + 1) = rsADO.Fields(i).Name Next i Range('A2').CopyFromRecordset rsADO rsADO.Close cnADO.Close Set cnADO = Nothing Set rsADO = Nothing End Sub 另外需要說明兩點是…… 在以上VBA代碼中輸入的SQL語句,雙引號應(yīng)改為單引號,這是因為SQL語句作為字符串,外圍已經(jīng)存在一對雙引號了,內(nèi)部就不能再使用雙引號。 |
|