Вот пример использования SQL для объединения данных из двух диапазонов: он будет работать нормально, если файл открыт (пока он был сохранен, поскольку вам нужен путь к файлу).
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
Вы попробовали поиск по Google "OLEDB Excel"? Множество примеров будет найдено ... –
Привет, Тим, я уже использую oledb прямо сейчас, чтобы получить данные, но файл, который я читаю, не является файлом, в котором я код VBA. Так что это работает. Но я хочу прочитать из уже открытого файла, а код VBA также находится в том же открытом файле. – iosDeveloper
См. Пример кода ниже ... –