Excel VBA / Bonus materiale / Datakilder
|
Excel VBA som firmakursus?
Ja, jeg holder ikke kun fjernundervisningskurser
- jeg kan også komme ud i din virksomhed og undervise med
udgangspunkt i jeres data og udfordringer.
|
|
Querytables
Man kan oprette forbindelse til en ekstern database med QueryTables objekt. QueryTables objektet har en add metode med syntaksen:
QueryTables.Add(Connection, Destination, Sql)
Connection er en tekststreng, der beskriver, hvordan der skal etableres forbindelse til databasen. Destination er en angivelse af, hvor informationerne skal afleveres og Sql er en tekststreng, der beskriver, hvilke informationer, der skal trækkes ud af databasen.
Connection
Som skrevet er Connection en tekststreng - den er temmelig lang og skal være præcis. Her er der et eksempel på sådan en:
ODBC;DSN=MS Access 97 Database;DBQ=C:\Program Files\Microsoft Office\
Office\Samples\Northwind.mdb;DefaultDir=C:\Program Files\Microsoft Office\
Office\Samples;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;
ODBC står for Open DataBase Connectivity. Mange databaser bruger ODBC drivere til at give andre programmer adgang til deres data.
DNS står for Data Source Name
DBQ er sti og navn på den database du vil etablere forbindelse til.
Hvordan laver man så en connection streng?
En hurtig vej til en connection streng er at oprette en QueryTable manuelt og tage et kig på Connection strengen. Processen er følgende:
?sheet1.Querytables(1).Connection (arbejder du i DK versionen skal du skrive ark1 i stedet for sheet1)
- Og du vil se Connection strengen, som du så kan copy-paste ind i din kode
Hvordan laver man så en SQL streng?
Ja, det gør man på samme måde!
?sheet1.querytables(1).commandtext eller ?sheet1.querytables(1).sql (arbejder du i DK versionen skal du skrive ark1 i stedet for sheet1)
Og et eksempel
Sub LavQT()
Dim sConn As String
Dim sSql as String
Dim oQt as QueryTable
sConn = "ODBC;DSN=MS Access 97 Database;"
sConn = sConn & "DBQ=C:\Program Files\Microsoft Office\ "& _
"Office\Samples\Northwind.mdb; "& _
"DefaultDir=C:\Program Files\Microsoft Office\Office\Samples; "& _
"DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"& _
sSql = "SELECT Customers.CustomerID, Customers.CompanyName, Customers.City "& _
"FROM `C:\Program Files\Microsoft Office\Office\Samples\Northwind` "& _
".Customers Customers "& _
"WHERE (Customers.City='Berlin') "& _
"ORDER BY Customers.CompanyName"& _
Set oQt = ActiveSheet.QueryTables.Add( _
Connection:=sConn, _
Destination:=Range("a1"), _
Sql:=sSql)
oQt.Refresh
End Sub
Lad være med at bruge makro optageren til dette - det bliver slet ikke til at overskue.
Lav om på udvalget
Man kan ændre en querytables udvalg ved ganske enkelt at ændre dens commandtekst:
Sub qry()
Sheet1.QueryTables(1).CommandText = _
"SELECT Salg.ID, Salg.Fakturanr, Salg.Dato, Salg.Kundenr, Salg.Firma, Salg.Sælger, Salg.Gruppe, Salg.Model, Salg.`Stk pris`, Salg.Antal, Salg.Total " & _
"FROM `N:\Tekster\Dumps\salg`.Salg Salg " & _
"WHERE (Salg.Gruppe LIKE '%" & Range("M1").Value & "%') " & _
"ORDER BY Salg.Kundenr"
Sheet1.QueryTables(1).Refresh
End Sub
Læs mere her: http://www.dicks-clicks.com/excel/ExternalData.htm#What_is
Hent en database du kan lege med her
Når du har betalt for kurset får du adgang til øvelser til hver lektion.
Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.<<- Ressourcer
Pivot tabeller ->>