使用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