閱讀517 返回首頁    go 阿裏雲 go 技術社區[雲棲]


在其他應用程序vba中使用SQL

有時您想在Excel中使用SQL?

我創建這個模塊直接得到結果作為字符串(所有項目從fieldloop像這樣a / b / c / d用“/”分隔符),
或者你可以調用這個函數到sub並返回一個數組來指定範圍在表在Access中查詢)
或者甚至直接應用使用ctrl + Shift + Enter的數組格式(記住首先選擇多個單元格 - > write = SQL()在左上角conner)

SQL(dataRange As Range,FieldLoop As String,可選CritA As String ,可選分隔符作為字符串,可選唯一作為布爾值)
DataRange =包含標題的範圍
FieldLoop =要循環的字段的名稱,可以使用通配符,如“*”
或任何字符串如正常查詢選擇語句CritA =查詢條件(應該像這樣“Where”和某些條件)
Delimiter =“,”或“/”或任何字符,如果不留下此可選空格,SQL函數將返回字符串如下:“一個分隔符b分隔符c delimiter d”
Unique = True / False,default = false,使您能夠從TableRange

Tada中“SELECT DISTINCT” 您已經在Excel中完成了查詢數據。

公共函數SQL(dataRange As Range,FieldLoop As String,可選CritA As String,可選分隔符作為字符串,可選唯一為布爾)
錯誤GoTo err:

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim TableName As String
Dim StrResult As Variant
Dim strFile As String,strCon As String,strSQL As String

TableName = dataRange.Parent.Name&“$”&dataRange.Address(False,False)

strFile = ThisWorkbook.FullName
strCon =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source =”&strFile _
&“;擴展屬性=”“Excel 12.0; HDR =是; IMEX = 1”“;”

設置cn = CreateObject(“ADODB.Connection”)
設置rs = CreateObject(“ADODB.Recordset”)

cn.打開strCon

如果不是唯一=真的
    strSQL =“SELECT”&FieldLoop&“FROM [”&TableName&“]”&CritA
其他
    strSQL =“SELECT DISTINCT”&FieldLoop&“FROM [”&TableName&“]”&CritA
萬一
rs.打開strSQL,cn


用rs
        不做(.BOF或.EOF)
            If(InStr(1,FieldLoop,“,”,vbBinaryCompare)> 0或FieldLoop =“*”)和Delimiter =“”然後
                StrResult = Application.Transpose(.GetRows)
                轉到下一步:
            其他
                IfFields(0).Value <>“”Then
                    StrResult = StrResult&.Fields(0).Value&Switch(Delimiter =“,”,“,”,True,Delimiter)
                萬一
                .MoveNext
            萬一
        循環
結束與
下一步:
如果不是IsArray(StrResult)而不是IsEmpty(StrResult)然後
    如果Len(StrResult)> 0那麼
        SQL = Left $(StrResult,Len(StrResult)) - 1)
    其他
        SQL =“No Item code Found !!”
    萬一
其他
    SQL = StrResult
萬一

ExitF:
退出功能

呃:
Debug.Print err.Number&“ - ”&err.Description
恢複ExitF:
結束功能

最後更新:2017-08-15 13:32:16

  上一篇:go  物聯網+大數據 共享經濟的未來是什麼?
  下一篇:go  模煳字符串匹配:雙重解密算法