26. april 2007 - 13:51Der er
8 kommentarer og 1 løsning
Eksportere tabeller til Excel
Jeg prøver at lave et værktøj til at generere data til en månedlig projektopfølgning. Planen er at der pr. projekt skal dannes en excelfil, som så skal ligge i en filstruktur ala det her: c:\projektopfølgning\2007\2007-04\djf-lev.xls. Altså skal der laves en ny folder for hver måned, og under denne folder ligger der så en række excelfiler der gerne skulle dannes af en macro i Access.
Jeg har i Access lavet en række forespørgsler, der danner tabeller med det indhold, som jeg gerne vil have eksporteret. Og jeg har lavet en formular hvori man indtaster en dato, og trykker på en knap som så danner data. Men jeg mangler en makro der kan eksportere mine data.
De Access tabeller jeg har lavet indeholder flere projekter, men kan man ikke få den til at eksportere data for ét projekt af gangen og samtidig danne en excel fil i den filstruktur jeg har beskrevet ovenfor.
Jeg har lavet en test DB, hvis der er nogle som gerne vil have hands on for nemmere at kunne få et indtryk af mit problem.
Jeg tror ikke jeg har formuleret mig godt nok. Jeg kan godt finde ud af at eksportere tabeller og forespørgsler med Access, dog ikke i VBA. Men problemet er at jeg gerne vil have noget VBA kode, der danner distincte excel filer for hvert projekt i mine forespørgsler/tabeller. Eller sagt på en anden måde den skal kunne danne en excel fil til et projekt hvis der er data på det i mine tabeller/forespørgsler.
Jeg opererer med ca 100 forskellige projekter hver måned, og der kommer hele tiden nye til og gamle falder fra. Så det kunne være fedt hvis man kunne lave en dynamisk kode der selv kunne finde ud af hvilke excel filer der hver måned skal dannes.
Du kunne fremfinde alle relevante projekter og så lave en løkke, der løb dem igennem og trak de korrekte data ud af dine tabeller/forespørgsler.
En grovskitse (som skal tilrettes med dine forespørgselsnavne osv):
Sub ExporterProjekter() Const ExportQueryNavn = "Q_Export" Dim Qdf As QueryDef Dim TotalSQL As String Dim TotalRst As Recordset Dim ProjektSQL As String Dim FilNavn As String Dim Mappe As String
Mappe = "c:\Projektopfølgning\" & Year(Date) & "\" & Year(Date) & "-" & Format(Month(Date), "00") On Error Resume Next MkDir ("c:\Projektopfølgning") MkDir ("c:\Projektopfølgning\" & Year(Date)) MkDir Mappe On Error GoTo 0
' Find alle relevante projekter TotalSQL = "SELECT Q_Projekter.* FROM Q_Projekter WHERE Aktiv=True" Set TotalRst = CurrentDb.OpenRecordset(TotalSQL)
Do ProjektSQL = "SELECT Q_Eksport.* FROM Q_Eksport WHERE ID=" & TotalRst.Fields("ID")
' Slet evt. gammel forespørgsel On Error Resume Next CurrentDb.QueryDefs.Delete ExportQueryNavn On Error GoTo 0 ' Opret ny forespørgsel Set Qdf = CurrentDb.CreateQueryDef(ExportQueryNavn) With Qdf .SQL = ProjektSQL .Close End With Set Qdf = Nothing
Det var godt nok en gammel sag ;o) Takker for point.
Synes godt om
Ny brugerNybegynder
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.