I have an excel file(Lets’ say File X) with 2 sheets. In first sheet I display charts. Second I have data for the chart. In order to get data from chart, I need to process that data as we do in SQL like Group by, order by. Is there any way I can use oledb to read data from second sheet using VBA code in same excel file(file X)?
Here’s an example of using SQL to join data from two ranges: it will work fine if the file is open (as long as it has been saved, because you need a file path).
Sub SqlJoin() Dim oConn As New ADODB.Connection Dim oRS As New ADODB.Recordset Dim sPath Dim sSQL As String sSQL = "select a.blah from <t1> a, <t2> b where a.blah = b.blah" sSQL = Replace(sSQL, "<t1>", Rangename(Sheet1.Range("A1:A5"))) sSQL = Replace(sSQL, "<t2>", Rangename(Sheet1.Range("C1:C3"))) If ActiveWorkbook.Path <> "" Then sPath = ActiveWorkbook.FullName Else MsgBox "Workbook being queried must be saved first..." Exit Sub End If oConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & sPath & "';" & _ "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';" oRS.Open sSQL, oConn If Not oRS.EOF Then Sheet1.Range("E1").CopyFromRecordset oRS Else MsgBox "No records found" End If oRS.Close oConn.Close End Sub Function Rangename(r As Range) As String Rangename = "[" & r.Parent.Name & "$" & _ r.Address(False, False) & "]" End Function