Avatar billede sonos Nybegynder
05. juli 2004 - 13:32 Der er 20 kommentarer

Import af data fra access

hej,

Jeg skal importere data fra en forespørgelse i access, det er også nemt nok, mit problem er at jeg gerne vil kunne flytte excel filen til andre placeringer. Når jeg så gør det passer linket til det importeret data ikke. databasen og filen ligger i samme mappe, og det vil de altid gøre. Kan man istedet for at hele stien til access databasen skal være feks. c:/mappe1/mappe2/access.dba lave det sådan at det kun er mappen man vælger, altså mappe2/access.dba

jeg ved ikke om det er til at forstå, er der nogen der kan hjælpe med det??

mvh.

Sonos
Avatar billede falster Ekspert
05. juli 2004 - 15:59 #1
Er det sådan, at du i Excel bruger "Data", "Importer eksterne data" og "Importer data ..."?

Hvis det er, ku' du så ikke beskrive problemet derfra?
Avatar billede sonos Nybegynder
05. juli 2004 - 16:03 #2
jo det er sådan,

men når man så importere data, så skal man jo vælge hvilken database man tager forespørgelsen fra, og den ligger så på et eller andet drev. hvis så man flytter databasen så passer den sti jo ikke, og det er det jeg gerne vil undgå
Avatar billede knowit-mmp Nybegynder
05. juli 2004 - 16:08 #3
Jeg kender umiddelbart ikke nogen måde at lave en Access-forespørgsel dynamisk.

Dette skyldes at det kald der oprettes til Databasen indeholder en sti til din Access database, eks.

"SELECT * FROM `C:/mappe1/mappe2/access.mdb`.Tabel1 Tabel1 WHERE Tabel1.Field=Value"

Jeg kender kun en metode til at gøre det dynamisk og det er ved hjælp af VBA...
Det skal jeg gerne hjælpe dig med...
Avatar billede falster Ekspert
05. juli 2004 - 16:12 #4
Så vidt jeg kan se, giver det ikke problemer, at xls-filen flyttes. Den opdaterer korrekt efter en flytning, når der ændres data (og dermed forespørgselsresultat) i db. Men VBA er sikkert vejen, hvis det skal være dynamisk.
Avatar billede kabbak Professor
05. juli 2004 - 21:11 #5
Sti = Application.Path ' er altid stien til excelarket
strsql = "SELECT * FROM " & Sti & "/access.mdb`.Tabel1 Tabel1 WHERE Tabel1.Field=Value"
Avatar billede sonos Nybegynder
06. juli 2004 - 06:15 #6
ok, jeg ved ikke noget om de "udtryk" i bruger (SQL)

Så hvis i kan oversætte det til en som ikke fatter noget, så ville det være fedt.
eller lave en "brugsanvisning"
Avatar billede sonos Nybegynder
06. juli 2004 - 08:22 #7
Kan man i det hele taget lave SQL i excel??
Avatar billede bak Forsker
06. juli 2004 - 10:43 #8
Prøv at stille dig i det ark det drejer sig om kør denne makro.
Det gør ikke det hele dynamisk. Jeg tror ikke den mulighed eksisterer.
Men dette vil ændre stien i query til at være samme sti som regnearket.

Sub ChangePath()
Dim stDBase As String
Dim vaTemp
Dim stPath As String
Dim vaConn As Variant
    stPath = ActiveWorkbook.path
    vaConn = Split(ActiveSheet.QueryTables(1).Connection, ";")
    vaTemp = Split(vaConn(2), "\")
    stDBase = vaTemp(UBound(vaTemp))
    vaConn(2) = "DBQ=" & stPath & "\MyBase.mdb"
    vaConn(3) = "DefaultDir=" & stPath
    vaConn = Join(vaConn, ";")
    ActiveSheet.QueryTables(1).Connection = vaConn
End Sub
Avatar billede kabbak Professor
06. juli 2004 - 18:20 #9
her er en sammen flikket en.

Public Sub HentData()
' Kræver reference til
' Microsoft ActiveX Data Object 2.7 library

  Dim rsData As ADODB.Recordset, strConnect As String, strSQL As String, Database As String
  Dim K As Integer, I As Long
    Database = ThisWorkbook.Path & "\Biler.mdb" ' Ændres til din DB, men behold \

    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Database & ";"
   
    ' Vælg data via sql, ret til din sql
      strSQL = "SELECT * FROM Biler"
        Set rsData = New ADODB.Recordset
    rsData.Open strSQL, strConnect, adOpenStatic, adLockOptimistic, adCmdText
 
    GetCust = Application.WorksheetFunction.Transpose(rsData.GetRows)

K = rsData.Fields.Count
For I = 0 To K - 1
  Cells(1, I + 1) = rsData.Fields.Item(I).Name
  Next
    I = UBound(GetCust)
Range(Cells(2, 1), Cells(I + 1, K)) = GetCust
    rsData.Close
    Set rsData = Nothing
End Sub
Avatar billede sonos Nybegynder
06. juli 2004 - 18:27 #10
Hej Bak,

den du har lavet der. Laver den stien om til at være den samme som hvor regnearket ligger? for så er det nok det jeg skal bruge.

Og hvordan laver jeg så den macro?

-Kabbak
øhh det kan godt være, din virker men jeg ved som sagt ikke noget om hvordan eller hvor jeg sætter koden ind henne.
Avatar billede bak Forsker
06. juli 2004 - 19:00 #11
Ja, den laver stien til databasen om til at være den smme som som den regnearket ligger i.

Tryk Alt-F11 for at komme om til makroeditoren..
Under Insert vælger du Module
Kopier så bare min kode ind.
Kør så makroen/koden.
Avatar billede bak Forsker
06. juli 2004 - 19:03 #12
Ps hvis du gemmer makroen sammen med filen kan du altid flytte tingene rundt (sålænge de bliver sammen) og så bare køre makroen bagefter.
Avatar billede sonos Nybegynder
06. juli 2004 - 19:09 #13
OK, det er lige det jeg skal bruge!!

Jeg kan først teste det på mandag, så er det ok at vente med at uddele point til jeg har fundet ud af om det virker hos mig??
Avatar billede sonos Nybegynder
06. juli 2004 - 19:21 #14
Gælder macroen på alle ark?
Avatar billede bak Forsker
06. juli 2004 - 21:29 #15
Nej, men det kan den da komme til :-)

Sub ChangePath()
Dim stDBase As String
Dim vaTemp
Dim stNewPath As String
Dim vaConn As Variant
Dim ws As Worksheet
Dim qt As QueryTable
    stNewPath = ActiveWorkbook.path
    For Each ws In ActiveWorkbook.Worksheets
    On Error Resume Next
        For Each qt In ws.QueryTables
            vaConn = Split(qt.Connection, ";")
            vaTemp = Split(vaConn(2), "\")
            stDBase = vaTemp(UBound(vaTemp))
            vaConn(2) = "DBQ=" & stNewPath & "\" & stDBase
            vaConn(3) = "DefaultDir=" & stNewPath
            vaConn = Join(vaConn, ";")
            qt.Connection = vaConn
        Next
    On Error GoTo 0
    Next
End Sub
Avatar billede sonos Nybegynder
12. juli 2004 - 06:55 #16
Hej Bak,

Den skriver : den installerbare ISAM kan ikke findes

hvad skal jeg så gøre?

Mvh.
Sonos
Avatar billede sonos Nybegynder
30. juli 2004 - 07:39 #17
Den ændre ikke stien, og den kommer heller ikke med nogen fejlmelding.
Avatar billede bak Forsker
30. juli 2004 - 10:31 #18
prøv at fjerne linien
On Error resume next

og fortæl så hvor den fejler
Avatar billede sonos Nybegynder
30. juli 2004 - 10:35 #19
der sker heller ikke noget
Avatar billede sonos Nybegynder
30. juli 2004 - 10:42 #20
og den fejler ikke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester