Excel VBA SQL - multiple data sources -


i have simple problem cannot find answer to.

i have following sql:-

select filea in (select b fileb) 

i attempting run in excel using vba.

the problem have filea table on as/400 , fileb table in excel spreadsheet. is, 2 different datasources. can't find way combine 2 datasources in 1 sql statement.

anybody got bright ideas.

the below example shows how data 2 excel workbooks within single sql query (since haven't got as/400 data source), , put result recordset worksheet. code placed in query.xlsm:

option explicit  sub sqlwhereintest()      dim strconnection string     dim strquery string     dim objconnection object     dim objrecordset object      strconnection = _         "provider=microsoft.ace.oledb.12.0;" & _         "user id=admin;" & _         "data source='" & thisworkbook.fullname & "';" & _         "mode=read;" & _         "extended properties=""excel 12.0 macro;"";"      strquery = _         "select * [sheet1$] " & _         "in '" & thisworkbook.path & "\src1.xlsx' " & _         "[excel 12.0;provider=microsoft.ace.oledb.12.0;mode=read;extended properties='hdr=yes;'] " & _         "where country in " & _         "(select countryfilter [sheet1$] " & _         "in '" & thisworkbook.path & "\src2.xlsx' " & _         "[excel 12.0;provider=microsoft.ace.oledb.12.0;mode=read;extended properties='hdr=yes;'])"      set objconnection = createobject("adodb.connection")     objconnection.open strconnection     set objrecordset = objconnection.execute(strquery)     recordsettoworksheet sheets(1), objrecordset     objconnection.close  end sub  sub recordsettoworksheet(objsheet worksheet, objrecordset object)      dim long      objsheet         .cells.delete         = 1 objrecordset.fields.count             .cells(1, i).value = objrecordset.fields(i - 1).name         next         .cells(2, 1).copyfromrecordset objrecordset         .cells.columns.autofit     end  end sub 

also there 2 workbooks data sources in same folder query.xlsm.

src1.xlsx containing customers:

src1

src2.xlsx:

src2

the resulting worksheet follows:

result

it works on 64-bit version excel 2013 me. make compatible .xls , excel 2003 (where provider ace.oledb.12.0 isn't installed) have replace provider=microsoft.ace.oledb.12.0; provider=microsoft.jet.oledb.4.0;, , in extended properties excel 12.0 macro; / excel 12.0; excel 8.0;. data source connection object isn't limited query.xlsm file (see thisworkbook.fullname part within strconnection), code placed in. data source, compatible 1 of available providers, either file-based or server-based. find more connection strings data source on http://www.connectionstrings.com/


Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - Bypass Geo Redirect for specific directories -

php - .htaccess mod_rewrite for dynamic url which has domain names -