我正在尝试获取少量数据,Excel中大约有200个字段,并从SQL中检索数据,在where子句中为每一项检索该字段。
TABLE:
ID Name Phone
1 Test1 1234
2 Test2 1235
3 Test3 1236
Excel:
Date ID
2/1/11 1
2/1/11 2
2/1/11 3我希望能够在excel中检索(希望本身不需要编写任何额外的代码-可能是简单的Excel ODBC或SQL与查询的连接)。因此,我的数据最终会出现在Excel文档中:
Excel:
Date ID Name Phone
2/1/11 1 Test1 1234
2/1/11 2 Test2 1235
2/1/11 3 Test3 1236我不确定我的解释是否足够清楚...
我使用的是Excel2007,我也有2010年的版本。SQL是SQL Server 2000。
谢谢!
发布于 2011-02-16 08:29:46
阿多,我担心。
Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer
''This is not the best way to refer to the workbook
''you want, but it is very convenient for notes
''It is probably best to use the name of the workbook.
strFile = ActiveWorkbook.FullName
''Note that if HDR=No, F1,F2 etc are used for column names,
''if HDR=Yes, the names in the first row of the range
''can be used.
''This is the Jet 4 connection string, you can get more
''here : http://www.connectionstrings.com/excel
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
''Late binding, so no reference is needed
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
strSQL = "SELECT * " _
& "FROM [Sheet1$] a " _
& "LEFT JOIN " _
& "[ODBC;Driver={SQL Server Native Client 10.0};" _
& "Server=servername;Database=test;" _
& "Trusted_Connection=yes].tbl b " _
& "ON a.[Id]=b.[Id] "
rs.Open strSQL, cn, 3, 3
''Pick a suitable empty worksheet for the results
Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs
''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing发布于 2011-02-16 08:50:11
除非有充分的理由不在代码中这样做,否则您应该直接使用代码而不是sql。
https://stackoverflow.com/questions/5010617
复制相似问题