Just nu i M3-nätverket
Gå till innehåll

Hämta data från access till excel.


rilleking

Rekommendera Poster

Hej på er!

 

Jag har en databas med massa uppgifter om båtar som jag skulle vilja få in i mitt excelblad.

Jag har har lyckats med det genom att använda mig av "hämta extern data", "microsoft query", från excel menyn. Allt fungerar bra så. Där kan jag också välja att ta fram data från endast en båt genom att filtrera de olika fälten.

Då väljer jag t.ex att filtrera fält 1 där jag har alla båtnamnen står. På så sätt kan jag få fram alla uppgifterna på den båt som jag väljer.

 

Problemet är bara att jag skulle vilja göra ett makro som gör allt det här åt mig. Och filtreringen ska ske genom att matcha ett båtnamn som står i cell $K$10 i kalkylbladet, med databasen...

 

Jag har skapat ett makro genom makroinspelningen, men jag vet inte hur jag ska bete mig för att kunna använda mig av båtnamnet i cell $K$10, för att filtrera databasen.

 

Så här ser koden ut som jag spelade in.

 

Sub access()
'
' access Makro
'

'
   With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
       "ODBC;DSN=MS Access Database;DBQ=C:\Users\Richard\Documents\båtar.accdb;DefaultDir=C:\Users\Richard\Documents;DriverId=25;FIL=MS Acce" _
       ), Array("ss;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("$A$2")) _
       .QueryTable
       .CommandText = Array( _
       "SELECT BÅTDATA.Fält1, BÅTDATA.Fält2, BÅTDATA.Fält3" & Chr(13) & "" & Chr(10) & "FROM `C:\Users\Richard\Documents\båtar.accdb`.BÅTDATA BÅTDATA" & Chr(13) & "" & Chr(10) & "WHERE (BÅTDATA.Fält1='EKEN')" _
       )
       .RowNumbers = False
       .FillAdjacentFormulas = False
       .PreserveFormatting = True
       .RefreshOnFileOpen = False
       .BackgroundQuery = True
       .RefreshStyle = xlInsertDeleteCells
       .SavePassword = False
       .SaveData = True
       .AdjustColumnWidth = True
       .RefreshPeriod = 0
       .PreserveColumnInfo = True
       .ListObject.DisplayName = "Båtar"
       .Refresh BackgroundQuery:=False
   End With
   Range("H11").Select
End Sub

 

EKEN heter båten i det här fallet som jag filtrerat ut från databasen.

 

Vore mycket tacksam för hjälp.

 

/Richard

 

Länk till kommentar
Dela på andra webbplatser

Borde "bara" vara att ändra denna del

"WHERE (BÅTDATA.Fält1='EKEN')"

till

"WHERE (BÅTDATA.Fält1=" & Blad1.Range("K10") & ")

Kanske att även fnuttarna ' måste vara med:

"WHERE (BÅTDATA.Fält1='" & Blad1.Range("K10") & "')"

 

Blad1 - referensen till bladet där cell K10 finns

rekommendation, ge cellen du hämtar data från ett namn och använd det namnet i koden.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...