我最近得到了一个编码分配,它涉及我为.xlsx表单(excel电子表格)中的数据库编写SQL查询。赋值基本上涉及我从前三个表中选择某些值,对这些值进行一些计算,然后在第四个表上打印答案。所有四个表都已创建,前三个表有输入值供我选择,而最后一个表的标题下面我应该把答案放在其中。
我可以知道怎么做吗? (基本上,我可以在哪里编写SQL命令,如SELECT * FROM表1当目标是excel表时WHERE Number = 1)
答案 0 :(得分:0)
我一直对Excel文件运行查询 - 通常是xls,但xlsx的代码基本相同:
Sub ImportThisFile(FilePath As String, SourceSheet As String, Destination As Range)
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
FilePath & ";Extended Properties=Excel 8.0;"
Sql = "SELECT * FROM [" & SourceSheet & "$]"
Set RcdSet = New ADODB.Recordset
RcdSet.Open Sql, Conn, adOpenForwardOnly
Destination.CopyFromRecordset RcdSet
RcdSet.Close
Set RcdSet = Nothing
Conn.Close
Set Conn = Nothing
End Sub
这使用ADODB对象的早期绑定,因此" Microsoft ActiveX Data Objects 2.x Library"将需要添加到您的参考(工具 - >参考...)
根据connectionstrings.com,对于XLSX,提供者应为Microsoft.Jet.OLEDB.12.0
,扩展属性应为Excel 12.0 Xml
https://www.connectionstrings.com/excel/
如何从另一个子例程/函数调用它的示例:
Sub StartDoingStuff()
ImportThisFile "c:\Path\To\File.xls", "Sheet1", range("Sheet2!A2")
End Sub