Access Records via SQL to Excel Workbook:
Return to List
Sub intro()
Dim conn As New Connection
Dim rec As New Recordset
Dim ws As Worksheet
Dim sql$, i&
Set ws = ThisWorkbook.Worksheets("intro")
conn.Open "Provider=microsoft.jet.oledb.4.0;" + _
"Data Source=" + ThisWorkbook.Path + "\nwind.mdb;"
sql = "SELECT LastName, FirstName " & _
"FROM employees ORDER BY LastName, FirstName"
rec.Open sql, conn
While Not rec.EOF
i = i + 1
ws.[a1].Cells(i) = rec!LastName + ", " + rec!FirstName
rec.MoveNext
Wend
rec.Close: conn.Close
End Sub
Sub rec_fields()
Dim conn As New Connection
Dim rec As New Recordset
Dim f As Field
Dim ws As Worksheet
Dim i&
Set ws = ThisWorkbook.Worksheets("fields")
conn.Open "Provider=microsoft.jet.oledb.4.0;" + _
"Data Source=" + ThisWorkbook.Path + "\nwind.mdb;"
rec.Open "employees", conn
For Each f In rec.Fields
i = i + 1
ws.[a1].Cells(i) = f.Name
ws.[b1].Cells(i) = f.Type
ws.[c1].Cells(i) = TypeName(f.Value)
Next
rec.Close: conn.Close
End Sub
Sub command_parameters()
Dim conn As New Connection
Dim rec As New Recordset
Dim comm As New Command
Dim ws As Worksheet
Dim i&, countryname$
Set ws = ThisWorkbook.Worksheets("command")
conn.Open "Provider=microsoft.jet.oledb.4.0;" + _
"Data Source=" + ThisWorkbook.Path + "\nwind.mdb;"
Set comm.ActiveConnection = conn
comm.CommandText = "SELECT companyname FROM customers WHERE country = ?"
countryname = InputBox("Please type in a country name (i.e. 'germany').")
comm.Parameters(0) = countryname
rec.Open comm
ws.[a1].CopyFromRecordset rec
rec.Close: conn.Close
End Sub