Avatar billede r_becker Novice
16. maj 2002 - 21:20 Der er 10 kommentarer og
1 løsning

fra rapport til exel

Jeg skulle gerne have nogle data fra nogle kontrol elementer over i et regneark i nogle bestemte celler,
jeg har forsøgt mig med ddesend, men kan ikke rigtigt få det til at virke...(hvis det idet heletaget er den jeg skal bruge) (:
Avatar billede terry Ekspert
16. maj 2002 - 21:29 #1
You could automate Excel from Access and copy the fields via automation, or you could export a table or query to Excel!

But I have a feeling we are not talking Access!
Avatar billede terry Ekspert
16. maj 2002 - 21:32 #2
Taken from http://www.mvps.org/access/

A sample Sub to demonstrate Excel Automation.

Note: Also pick up the fIsAppRunning function from the API section.

'************ Code Start **********
Sub sTestXL()
Dim objXL As Object
Dim strWhat As String, boolXL As Boolean
Dim objActiveWkb As Object

    If fIsAppRunning("Excel") Then
        Set objXL = GetObject(, "Excel.Application")
        boolXL = False
    Else
        Set objXL = CreateObject("Excel.Application")
        boolXL = True
    End If
   
    objXL.Application.workbooks.Add
    Set objActiveWkb = objXL.Application.ActiveWorkBook
   
    With objActiveWkb
        .Worksheets(1).Cells(1, 1) = "Hello World"
        strWhat = .Worksheets(1).Cells(1, 1).value
    End With
   
    objActiveWkb.Close savechanges:=False
   
    If boolXL Then objXL.Application.Quit
   
    Set objActiveWkb = Nothing: Set objXL = Nothing
    MsgBox strWhat
End Sub
'************ Code End **********
Avatar billede mugs Novice
16. maj 2002 - 23:39 #3
Sådan kan du eksportere data fra Access til Excel. Jeg har ike set nærmere på Terry's kode. Men jeg antager at det er 2 alen ud af samme stykke. Jeg har en testdbi Access 97 der viser hvordan. Den viser desuden hvordan du fra Access åbner en bestemt Excel fil. koderne virker også i Access2000. Læg din e-mail hvis du er interesseret. 

Dim Obvar As Object, wkb As Object, Rst As Recordset Dim i As Integer, Felt1 As Integer, Felt2 As Integer, Tek As String
Me.Refresh
'flg 2 linier skal skrives på een linie
Set Rst = DBEngine.Workspaces(0).Databases(0).OpenRecordset("Tabel1", dbOpenTable)
Set Obvar = CreateObject("excel.application")
Obvar.Visible = True
Set wkb = Obvar.Workbooks.Add
wkb.Worksheets("Ark1").Cells(1, 1).Value = "Felt 1"
wkb.Worksheets("Ark1").Cells(1, 2).Value = "Felt 2"
For i = 2 To Rst.RecordCount + 1
wkb.Worksheets("Ark1").Cells(i, 1).Value = Str$(Rst.Fields![Felt1])
wkb.Worksheets("Ark1").Cells(i, 2).Value = Str$(Rst.Fields![Felt2])
Rst.MoveNext
Next
Tek = "=Sum(R[" + Str$(-Rst.RecordCount) + "]C:R[-1]C)"
wkb.Worksheets("Ark1").Cells(Rst.RecordCount + 2, 2).Value = Tek
wkb.Worksheets("Ark1").UsedRange.Columns.AutoFit
Set Obvar = Nothing
Avatar billede nih Novice
17. maj 2002 - 08:14 #4
du kan også bruge kommandoen:

DoCmd.transferSpreadsheet

Den kan ikke så meget, som hvis du bruger automation, som Terry og Mugs, men den er nem at bruge. Kig i hjælpen for eksempler.

Niels
Avatar billede nih Novice
17. maj 2002 - 08:14 #5
Svar
Avatar billede r_becker Novice
17. maj 2002 - 16:19 #6
jeg vil lige prøve dette docmd. da det de andre snakker om fatter jeg ikkr rigtigt en meter af.

jeg svarer senere når jeg har prøvet det
Avatar billede mugs Novice
17. maj 2002 - 18:03 #7
I så fald kan kommandolinien se således ud, det skal skrives på een linie:

DoCmd.TransferSpreadsheet acExport, 8, "Tabel1", "C:\Dokumenter\Mappe1", True, ""

hvor "Tabel1" indeholder de data i Access du vil eksportere, "C:\Dokumenter\Mappe1" er den Excel mappe du vil eksportere til.

Hvis du ikke er velbevandret i VBA, er det letteste nok at lave en makro:

I handlingsvinduet vælger du OverførRegneark.
I handlingsargumenter vælger du Eksporter.
Derefter udfylder du resten af handlingsargumenterne med de aktuelle oplysninger. Til sidst kan du indsætte makroen i en kommandoknaps vedklik hændelse.
Avatar billede r_becker Novice
17. maj 2002 - 20:48 #8
hej mugs

kan du ikke prøve at sende mig den testdbi. så jeg kan jeg prøve at lære lidt.... (:
( Rickie@skeeknejde.dk)

jeg synes ikke rigtigt at jeg kan få den makro til at køre, da det kun er fra et par beregnende felter jeg skal have over i et regneark
Avatar billede mugs Novice
17. maj 2002 - 21:17 #9
Sendt.
Avatar billede r_becker Novice
18. maj 2002 - 16:36 #10
jeg har fået skidet til at køre... ved hjælp af din makro tak skal du have... (:
Avatar billede mugs Novice
18. maj 2002 - 19:12 #11
Tak for point, fint at det kører. Du bør dog lave din makro til en VBA-procedüre, og køre denne fra f.eks. en kommandoknap. Lad Access funktioner hjælpe dig, du gør:

Åbn db i databasevinduet vælg fanen makro og marker den makro du vil konvertere, klik på funktioner > makro > konverter makroer til Visual Basic og klik. Access vil nu konvertere din makro til en VBA-procedüre og indsætte denne i et modul. Åbn dette modul og kopier procedüren undtagen den første og den sidste linie. Åbn derefter databasen i den formular og på det sted hvorfra du kører makroen. Her indsætter du en hændelsesprocedüre i stedet for makroen, åbn kodevinduet ved at klikke på de 3 små prikker i højre side af egenskabsarket og indsæt din kopierede procedüre. Afprøv det.

Når det fungerer, kan du herefter slette både makro og modul. Du bør på samme måde konvertere alle andre makroer og udelukkende benytte VBA-procedürer.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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