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

2021-09-23 08:56:13 字數 2095 閱讀 5712

有時您想在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 =「」然後

其他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:

結束功能

VBA 和其他應用程式互動

今天主要學學vba 和其他應用程式的互動 一 了解繫結的概念 每個office程式都有各自的物件庫,也就是每個程式可用的物件 方法和屬性 所以要能使excel訪問另外的office程式,就需要將另乙個office程式繫結起來。分為兩種 早期繫結 後期繫結 早期繫結 需要顯式地將客戶端應用程式指向伺服...

intent 啟動其他應用程式應用

被啟動activity中加入標籤 啟動activity中 intent opensomediagintent new intent opensomediagintent.addcategory android.intent.category.haha handlerthreadactivity.th...

在DELPHI應用程式中使用DLL

delphi的dll建立並不複雜,下面向大家介紹delphi的dll建立方法。1 首先建立乙個新的dll專案 newproject 因為dll與呼叫它的主程式要分開編譯。如果dll模組已經建立在呼叫它的專案中 project 則將它的窗體 form 從project移出,另建乙個新的專案 newpr...