我有一張excel文件(讓我們說文件X)與2張。在第一張表中我顯示圖表。第二我有圖表的數據。爲了從圖表中獲取數據,我需要按照我們在SQL中所做的那樣處理這些數據,如排序依據。有什麼辦法可以使用oledb從同一個excel文件(文件X)中使用VBA代碼讀取第二張數據中的數據?使用OLEDB從打開的Excel中讀取數據文件
謝謝!
我有一張excel文件(讓我們說文件X)與2張。在第一張表中我顯示圖表。第二我有圖表的數據。爲了從圖表中獲取數據,我需要按照我們在SQL中所做的那樣處理這些數據,如排序依據。有什麼辦法可以使用oledb從同一個excel文件(文件X)中使用VBA代碼讀取第二張數據中的數據?使用OLEDB從打開的Excel中讀取數據文件
謝謝!
以下是使用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
感謝您的幫助蒂姆!這就像一個魅力! – iosDeveloper 2013-03-25 19:49:57
嘿蒂姆,我還有一個問題,如果從SharePoint打開文件,它說ActiveWorkBook.FullName無效的Internet地址。你有什麼想法如何擺脫? – iosDeveloper 2013-06-20 20:30:16
對不起,Sharepoint here ... – 2013-06-20 21:02:12
您是否嘗試使用Google搜索「OLEDB Excel」?很多的例子會被發現... – 2013-03-25 16:55:00
嗨蒂姆,我已經在使用oledb來獲取數據,但我正在閱讀的文件不是我有VBA代碼的文件。所以它的工作原理。但是我想從已經打開的文件中讀取,並且VBA代碼也在同一個打開的文件中。 – iosDeveloper 2013-03-25 17:57:19
請參閱下面的示例代碼... – 2013-03-25 18:10:38