- ©«¤l
- 5923
- ¥DÃD
- 13
- ºëµØ
- 1
- ¿n¤À
- 5986
- ÂI¦W
- 0
- §@·~¨t²Î
- win10
- ³nÅ骩¥»
- Office 2010
- ¾\ŪÅv
- 150
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥xÆW°ò¶©
- µù¥U®É¶¡
- 2010-5-1
- ³Ì«áµn¿ý
- 2022-1-23
        
|
¦^´_ 7# Scott090
§Ú¨Ï¥Î2003ª©- Option Explicit
- Sub ExcelSQL()
- Dim SQL As String, TimeIntervalStr As Double
- Dim j%, r%
- Dim cnn As ADODB.Connection
- Dim rs As ADODB.Recordset
- Dim ws As Worksheet
- Set ws = ThisWorkbook.Sheets(1)
- Set cnn = New ADODB.Connection
- With cnn
- '.Provider = "Microsoft.ACE.OLEDB.12.0"
- ' .ConnectionString = "Extended Properties= Excel 12.0;" _
- & "Data Source=" & ThisWorkbook.FullName
- '«ØÄ³¤£n Source=" & ThisWorkbook.FullName ¦b³o¸ê®Æ®w¬¡¶Ã¯¤¤°õ¦æ¦¹¥¨¶°,«Ü¯Ó°O¾ÐÅé
- '**********************************************************
- '2003ª© ¤Þ¥Î¡Gmicrosoft activex data objects 2.x library
- .Provider = "microsoft.jet.oledb.4.0"
- .ConnectionString = "Extended Properties= Excel 8.0;" _
- & "Data Source=D:\VBA SQL.xls"
- '«ØÄ³¤£n Source=" & ThisWorkbook.FullName ¦b³o¸ê®Æ®w¬¡¶Ã¯¤¤°õ¦æ¦¹¥¨¶°,«Ü¯Ó°O¾ÐÅé
- .Open
- End With
- Set rs = New ADODB.Recordset
- SQL = "select * from [ct$] "
- rs.Open SQL, cnn
- With ws
- .[A1].CopyFromRecordset rs
- TimeIntervalStr = .[A1] '¨ú±o²Ä¤@Ӯɶ¡
- .UsedRange.Clear
- End With
- Do
- Set rs = New ADODB.Recordset
- SQL = "SELECT CTcode, avg(test.Volts) as Volts¥§¡,avg(test.Hz) as Hz¥§¡ from [CT$] " & _
- " as test where ¤é´Á®É¶¡ >=" & TimeIntervalStr & " AND ¤é´Á®É¶¡ <" & CDbl(DateAdd("n", 10, TimeIntervalStr)) & " Group by CTcode "
- rs.Open SQL, cnn, adOpenStatic, adLockReadOnly
- If rs.RecordCount Then 'Ū¨ú¬ö¿ý
- With ws
- If .UsedRange.Count = 1 Then
- .Cells(1) = "¤é´Á ®É¶¡"
- For j = 0 To rs.Fields.Count - 1
- .Cells(1, j + 2) = rs.Fields(j).Name
- Next
- End If
- r = .Cells(.Rows.Count, 2).End(xlUp).Row
- .Range("B" & r + 1).CopyFromRecordset rs
- r = .Cells(.Rows.Count, 2).End(xlUp).Row
- With .Range("A" & Rows.Count).End(xlUp).Offset(1)
- .Resize(r - .Row + 1) = DateAdd("n", 0, TimeIntervalStr) & vbLf & DateAdd("n", 10, TimeIntervalStr)
- End With
- End With
- End If
- TimeIntervalStr = CDbl(DateAdd("n", 10, TimeIntervalStr)) '¤U¤@Ó10¤ÀÄÁ
- Loop Until rs.RecordCount = 0 'µL¬ö¿ý
- rs.Close
- cnn.Close
- Set rs = Nothing
- Set cnn = Nothing
- End Sub
½Æ»s¥N½X |
|