Avatar billede nielschristiansen Nybegynder
02. juni 2006 - 23:43 Der er 16 kommentarer og
1 løsning

hvordan får jeg forbindelse til en access database fra vba excel

Hej jeg

er ret ny i det her vba ( men synes det er sjovt at rode med)


Jeg har lavet en form hvor jeg har indsat et spreadsheet som jeg gerne vil have henter oplysninger en access 2003 tabel men synes ikke rigtigt jeg kan få det til at virke har kigget en del på eksemplerne her på  siden men kan ikke rigtigt finde hoved og hale i det hele er der nogler der kan forklare mig det?

Jeg har oprette databasen test med tabellen test som indeholder navn,dato,beskrivelse
det vil jeg så gerne have skrevet ud i spreadsheetet


Mvh
Niels Christiansen
Avatar billede excelent Ekspert
03. juni 2006 - 07:52 #1
Prøv evt. sådan:

Opret evt. en ny Projektmappe
Start Makrooptager
Vælg menuen- Data/Importer eksterne data/Ny databaseforespørgsel
Vælg MS Access-database
klik Ok
Klik dig frem til mappen hvor filen er gemt
Marker din databasefil i ruden til venstre (database navn)
klik Ok
Klik på + ud for din tabel
Dobbeltklik på de felter der skal overføres til Exel
klik Næste
Juster evt. filtrering
klik Næste
Angiv evt. Sortering
klik Næste
Marker 'Returner data til Microsoft Office Excel'
klik Udfør
Vælg placering i regnearket
klik Ok
Stop Makrooptager
Avatar billede nielschristiansen Nybegynder
03. juni 2006 - 20:19 #2
Tak skal du have det prøver jeg
Avatar billede nielschristiansen Nybegynder
03. juni 2006 - 21:06 #3
Ja det kan godt være jeg er lidt dum til det her den skriver følgende i modul 1
Range("A1:C3").Select
    Range("C1").Activate
    Selection.ClearContents
    Selection.QueryTable.Delete
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access-database;DBQ=C:\database\test.mdb;DefaultDir=C:\database;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout" _
        ), Array("=5;")), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT test.id, test.DATO, test.NAVN, test.Behandling" & Chr(13) & "" & Chr(10) & "FROM `C:\database\test`.test test" & Chr(13) & "" & Chr(10) & "ORDER BY test.NAVN" _
        )
        .Name = "Forespørgsel fra MS Access-database_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
    Range("A3").Select


Og nu er jeg vant til at kode i php hvor man kan se hvor det er den indsætter værdierne men jeg kan ikke rigtigt se mig ud af denne her kan du hjælpe mig med det mit spreatsheet hedder midt
Avatar billede excelent Ekspert
03. juni 2006 - 21:22 #4
jeg går ud fra du har fået importeret nogen værdier fra din tabel ved denne operation? - og du har samtidig lavet koden som kan gøre det igen automatisk.
Så vidt jeg kan se, har du valgt A1 som placering i arket (Destination)
Avatar billede nielschristiansen Nybegynder
03. juni 2006 - 21:36 #5
ja værdierne kommer fint over i arketmen når sætter koden ind i Private Sub CommandButton1_Click()eller i Private Sub midt_Initialize() sker der ingenting
Avatar billede excelent Ekspert
03. juni 2006 - 21:53 #6
i stedet for at sætte hele koden ind i din CommandButton1, så
sæt følgende linie ind :
Call <navn på den sub du oprettede>

i makro du oprettede skal =Range("A1")) ændres til
=Range(adr))
tilføj desuden følgende 2 linier
Dim adr As String
adr = InputBox("Hvor skal værdierne placeres ")
lige efter Sub <navn på den sub du oprettede> (altså 2 linie)
Avatar billede nielschristiansen Nybegynder
03. juni 2006 - 21:59 #7
method range of object global faild
Avatar billede nielschristiansen Nybegynder
03. juni 2006 - 22:10 #8
Når jeg beder den om at debug markerer den dettte


With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access-database;DBQ=C:\database\test.mdb;DefaultDir=C:\database;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout" _
        ), Array("=5;")), Destination:=Range("midt"))
Avatar billede excelent Ekspert
03. juni 2006 - 22:15 #9
Når du skal indtaste placering af værdier, skal det være
en alm Celle adresse som : A1, B2 eller F10

der står =Range("midt)) i koden du postede

der skulle stå =Range(adr))
Avatar billede excelent Ekspert
03. juni 2006 - 22:31 #10
hvis du har demobasen Northwind, kan du prøve min test version
min er placeret i c:\Programmer\Microsoft Office\Office11\

http://pmexcelent.dk/HentData.xls
Avatar billede excelent Ekspert
03. juni 2006 - 22:35 #11
c:\Programmer\Microsoft Office\Office11\SAMPLES
Avatar billede nielschristiansen Nybegynder
04. juni 2006 - 10:01 #12
har fået dttil at virke med adr i destination havde lige glemt at fjerne " rundt om variablen
Avatar billede nielschristiansen Nybegynder
04. juni 2006 - 10:03 #13
men hvordan får jeg det så til at komme ind i spreadsheet(kaldet midt) ?
lige nu henter den det jo over i regnearket bag ved formen
Avatar billede excelent Ekspert
04. juni 2006 - 10:19 #14
indsæt:  Sheets("midt").Activate    - lige før
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _.........
Avatar billede nielschristiansen Nybegynder
04. juni 2006 - 10:46 #15
så får jeg en subscript out of range
Avatar billede excelent Ekspert
04. juni 2006 - 11:30 #16
hmm virker ok her
kan du ikke sende mig en kopi

pm@madsen.tdcadsl.dk
Avatar billede excelent Ekspert
04. juni 2006 - 15:25 #17
velbekom
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
Kurser inden for grundlæggende programmering

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