|
Option Explicit
Sub test1()
Dim ar, j&, c&, cnn As Object, rst As Object, strSQL$, strFileName$, strJoin$
Application.ScreenUpdating = False
Set cnn = CreateObject("ADODB.Connection")
With Worksheets(2)
c = .Cells(1, .Columns.Count).End(xlToLeft).Column
ar = Range(.Cells(1, "X"), .Cells(1, c)).Value
For j = 1 To UBound(ar, 2)
strJoin = strJoin & "," & ar(1, j)
Next j
strFileName = ThisWorkbook.FullName
Select Case Application.Version * 1
Case Is <= 11
cnn.Open "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & strFileName & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=0'"
Case Is >= 12
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileName & ";Extended Properties='Excel 12.0;HDR=YES;IMEX=0'"
End Select
strSQL = "SELECT " & Mid(strJoin, 2) & " FROM [" & Worksheets(1).Name & "$A1:C]"
Set rst = cnn.Execute(strSQL)
With .Range("X1")
.CurrentRegion.Offset(1).Clear
.Offset(1).CopyFromRecordset rst
End With
.Activate
End With
rst.Close: cnn.Close
Set rst = Nothing: Set cnn = Nothing
Application.ScreenUpdating = True
Beep
End Sub
|
|