2013-03-25 2 views
1

У меня есть файл excel (Lets 'say File X) с 2 листами. В первом листе я показываю диаграммы. Во-вторых, у меня есть данные для диаграммы. Чтобы получить данные из диаграммы, мне нужно обработать эти данные так же, как в SQL, например Group by, order by. Есть ли способ, которым я могу использовать oledb для чтения данных со второго листа, используя код VBA в том же файле excel (файл X)?Чтение данных с использованием OLEDB из открытого файла Excel

Спасибо!

+1

Вы попробовали поиск по Google "OLEDB Excel"? Множество примеров будет найдено ... –

+0

Привет, Тим, я уже использую oledb прямо сейчас, чтобы получить данные, но файл, который я читаю, не является файлом, в котором я код VBA. Так что это работает. Но я хочу прочитать из уже открытого файла, а код VBA также находится в том же открытом файле. – iosDeveloper

+0

См. Пример кода ниже ... –

ответ

3

Вот пример использования 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 
+0

Спасибо за помощь Тим !!! Это сработало как шарм !!! – iosDeveloper

+0

Эй, Тим, у меня есть еще одна проблема: если файл открыт из SharePoint, он говорит о неверном интернет-адресе для ActiveWorkBook.FullName. У вас есть идея, как избавиться от этого? – iosDeveloper

+0

Извините-нет Sharepoint здесь ... –

Смежные вопросы