Avatar billede fastwrite Nybegynder
31. juli 2002 - 11:16 Der er 6 kommentarer og
3 løsninger

Eksportere til Excel

Hej.

Jeg har en tabel med 32 forskellige navne. Disse navne er kædet sammen med nogle andre produkter.

Hvordan eksporter jeg nu disse til en excel, sådan at den gemmer en fil for hver enkelt navn?
Avatar billede b_hansen Novice
31. juli 2002 - 11:31 #1
du laver en forespørgsel pr. navn eksporterer dem til Excel
Avatar billede b_hansen Novice
31. juli 2002 - 11:31 #2
Du kan eventuelt lave en makro, der gør arbejdet for dig, hvis du skal gøre det mere end 1 gang
Avatar billede b_hansen Novice
31. juli 2002 - 11:34 #3
Du kan osse smide det over i et modul og så kunne koden se sådan ud, når du har defineret dine forespørgsler:

Function kontanthjælp()
On Error GoTo kontanthjælp_Err
    DoCmd.SetWarnings False    ' Her deaktiveres forespørgslen, om man vil overskrive en database
   
    DoCmd.OpenQuery "testforespørgsel", acNormal, acEdit
    DoCmd.SelectObject acTable, "resultattabel", True
    DoCmd.TransferSpreadsheet acExport, 8, "Excelfil", "f:\testområde\excelfilnavn", False, ""
 
    DoCmd.SetWarnings True      ' Her aktiveres forespørgslen, om man vil overskrive en database

kontanthjælp_Exit:
    Exit Function

kontanthjælp_Err:
    MsgBox Error$
    Resume kontanthjælp_Exit

End Function
Avatar billede mugs Novice
31. juli 2002 - 12:51 #4
Eller sådan. Funktionen sætter overskrifter på Excel-arket og tilpasser brugte kolonner. så de har den korrekte bredde. Hvis du vil have en testdb, så læg din e-mail.


Dim Obvar As Object, wkb As Object, Rst As Recordset '
Dim i As Integer, Felt1 As Integer, Felt2 As Integer, Tek As String
'Hvis du har oprettet en ny post, skal tabellen først opdateres, ellers ses den nye post ikke i Excel
'Me er den aktive formular og Refresh opdaterer den underliggende tabel / forespørgsel.
Me.Refresh
'Næste sætning definerer hvilken tabel der skal levere data og åbner denne
Set Rst = DBEngine.Workspaces(0).Databases(0).OpenRecordset("Tabel1", dbOpenTable)
'Excel åbnes ved hjælp af funktionen "CreateObject"
Set Obvar = CreateObject("excel.application")
'Gør Excel synlig, Du kan også flytte denne linie længere ned...
'hvis eksporten skal være afsluttet når Excel bliver synlig
Obvar.Visible = True
'Variablen wkb sættes = projektmappen, der tilføjes med metoden Add
Set wkb = Obvar.Workbooks.Add
'Der sættes overskrifter på Excel-arket
wkb.Worksheets("Ark1").Cells(1, 1).Value = "Felt 1"
wkb.Worksheets("Ark1").Cells(1, 2).Value = "Felt 2"
'Løkken der henter data fra tabel1 i Access og lægger data ind i Excel...
'Hvis der ekporteres tekst erstattes "Str$" med "Format"
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
'Linien tilpasser bredden af benyttede kolonner
wkb.Worksheets("Ark1").UsedRange.Columns.AutoFit
'Objektvariablen frigives
Set Obvar = Nothing
Avatar billede fastwrite Nybegynder
01. august 2002 - 21:41 #5
uhmenum.. jeg vil gerne have at du sender et forslag, Mugs.. send den til ftp.tsmedia.dk" target="_blank">ftp://eksperten:eksperten@ftp.tsmedia.dk - bare smid den et sted, og kald den et navn jeg kan forstå.. gerne MUGS-db - eller noget i den stil :)

På forhånd tak for forslagene.

Men hvad jeg kunne tænke mig var at den skrev filnavnet som FILNAVN01 - FILNAVN02 - 01 og 02 er data den har hentet fra en forespørgsel - i den forespørgsel er alle dataene der knytter sig til enten 01 eller 02 - og så fremdeles. Kan det ikke lade sig gøre?
Avatar billede mugs Novice
01. august 2002 - 23:32 #6
fastwrite > Jeg får en fejl når åbner din mappe: Windows kan ikke åbne denne mappe. Kontroller at du har adgangstilladelse.
Avatar billede sjap Praktikant
03. august 2002 - 18:48 #7
En anden mulighed end mugs' avancerede løsning kunne være:

Lav en ny tabel, der kun indeholder feltet Navn (tabellen benævnes nedenfor som "tblValgtNavn").

Lav derefter en forespørgsel, med tabellen med produkter og "tblValgtNavn" hvor du joiner Navn-feltet. (forespørgslen benævnes nedenfor som "qryNavnOgProdukt")

Du kan nu lægge nedenstående kode i et modul (eller tilknytte det til f.eks. en kommandoknap i en formular):

Public Function ExportDataTilExcel()
Dim db As Database
Dim rstNavn As Recordset
Dim rstValgtNavn As Recordset
   
Set db = CurrentDb
Set rstNavn = db.OpenRecordset("tblNavn", dbOpenDynaset)
Set rstValgtNavn = db.OpenRecordset("tblValgtNavn", dbOpenDynaset)
rstNavn.MoveFirst
Do Until rstNavn.EOF
    rstValgtNavn.MoveFirst
    rstValgtNavn.Edit
    rstValgtNavn("Navn") = rstValgtNavn("Navn")
    rstValgtNavn.Update
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "qryNavnOgProdukt", rstNavn("Navn")
    rstNavn.MoveNext
Loop

End Function

Jeg antager at der findes en tabel med alle navnene, der benævnes "tblNavn".
Avatar billede mugs Novice
18. august 2002 - 09:46 #8
fastwrite > Hvordan går det?
Avatar billede fastwrite Nybegynder
30. september 2002 - 23:44 #9
Mugs - jo, tak - det går meget godt.. Det virker jo bare :o)
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