Export naar excel

Status
Niet open voor verdere reacties.

klablabla

Gebruiker
Lid geworden
28 apr 2008
Berichten
116
Ik heb meerdere ideeen om dit op te lossen maar krijg het nog niet werkend.

Op mijn hoofdform staat een hoop informatie. (berekend en uit subforms gehaald)
Nu wil ik selecteren wat er naar excel geexporteerd moet worden.
Als ik exporteer naar excel neemt hij alles mee.
Is dit mogelijk zoja hoe?

Alle data die ik naar excel wil hebben wordt in een table gezet.
deze tabel staat niet open in mijn hoofd form.
hoe kan ik die specifieke tabel naar excel exporteren.
 
Ik heb even ge-googled en ik denk dat het niet mogelijk is, nee.
Maar misschien vind jij wel iets op google..?
 
Dat is uiteraard wel mogelijk, mits je maar fysiek hebt aangegeven wat je wilt exporteren. Je bent daar niet overdreven duidelijk in.
Nu wil ik selecteren wat er naar excel geexporteerd moet worden.
Alle data die ik naar excel wil hebben wordt in een tabel gezet.
deze tabel staat niet open in mijn hoofd form.
Vraag: bedoel je een tabel in Excel, of een tabel in Access? Ik neig naar Access, omdat je aangeeft dat je de tabel niet open hebt in je formulier.
Vraag: is die tabel leeg, en moet die gevuld worden met de selectie uit je formulier?
Volgende vraag: moet de export naar een nieuw bestand, of wil je de gegevens exporteren naar een bestaand werkblad?
Kortom: leg wat duidelijker uit wat je wilt!
 
Ik bedoel een tabel in access.
De tabel wordt al gevuld door een selectie uit het formulier

Ik wil deze tabel (in access) via mijn hoofdformulier exporteren naar excel.
 
Je bent nog niet helemaal duidelijk genoeg; een formulier vult uit zichzelf namelijk geen tabel, maar laat hoogstens records zien uit één of meer tabellen. In het laatste geval heb je een query als basis voor je formulier gebruikt. Als je dus op je formulier een selectie maakt, dan doe je dat door in je tabel(len) ietst te veranderen, bijvoorbeeld een selectievakje aan- of uitzetten.
Dat houdt dus de vraag open wat je wilt exporteren: maak je, via een knop, een extra tabel aan die je wilt exporteren, of wil je de records die op dat moment geselecteerd zijn in de Recordbron van je formulier (en dat kan dus net zo goed een query zijn) exporteren?
In het eerste geval is het exporteren simpel, want een complete tabel kun je makkelijk naar Excel exporteren. In het tweede geval zul je de query die op dat moment de recordselectie maakt moeten vastleggen, en vervolgens die query exporteren. Dat gaat op dezelfde manier als de tabel.

De laatste vraag die ik heb gesteld staat ook nog open: wil je exporteren naar een nieuw bestand, of moeten de gegevens worden toegevoegd aan een bestand werkboek?
 
Wat ik doe is met een knop de berekende waardes uit het uit het hoofd form met VBA naar een apparte tabel zetten.
Me.Frmtotalen.Form.OBHoeveelheid.Value = Me.OBTotaalHoeveelheid.Value
en dit dan meerdere keren voor diverse waardes. (subform frmtotalen staat wel op het hoofd form maar verborgen)
Dit werkt goed.

De tabel wordt dus al helemaal gevuld. Het enige wat ik dus wil is die tabel exporteren naar excel.
Het mooiste is als de gegevens uit die nieuwe tabel bij een bestaand werkboek komen.

Wat ik nu doe is in edit mode de tabel alleen openen en naar excel exporteren.
Maar dit wil ik kunnen doen met een knop op mijn hoofdform.
 
Laatst bewerkt:
Als je een bestaande tabel of query (en die heb je dus) wilt exporteren naar een nieuw bestand, dan kun je dat met deze opdrachtregel doen:
Code:
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "qMaxExtern", ExportPad & "Max_Extern.xls", True
als voorbeeld.
Wil je een bestaand Excel bestand bijwerken, dan zul je dat via VBA moeten openen, en vervolgens vullen. Dat is een stuk ingewikkelder. Een voorbeeldje:
Code:
Dim xlApp As Excel.Application
Dim xlWBk As Excel.Workbook
Dim xlWSht As Excel.Worksheet
Dim xlRng As Excel.Range
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim fld As DAO.Field

    '------------------------------------------------------------------------------
    'Query Personen openen
    '------------------------------------------------------------------------------
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("qPersonen")

    '------------------------------------------------------------------------------
    'Excel sessie openen
    '------------------------------------------------------------------------------
    sActie = "Openen van Excel sessie..."
    DoCmd.Echo False, "Bezig met: " & sActie
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False
    sActie = "Openen van Werkboek Aanvraagformulier Producten.xls"
    DoCmd.Echo False, "Bezig met: " & sActie

    Set xlWBk = xlApp.Workbooks.Open("Aanvraagformulier Producten.xls", True)
    Set xlWSht = xlWBk.Worksheets("Medewerkers")
    With xlWSht
        .Activate
        .Unprotect Password:="x"
        .Visible = xlSheetVisible
    End With
    
    '------------------------------------------------------------------------------
    'Handelingen in Excel uitvoeren
    '------------------------------------------------------------------------------
    sActie = "Vervangen van Medewerkers in Aanvraagformulier Producten.xls"
    DoCmd.Echo False, "Bezig met: " & sActie
    i = 1
    Set xlRng = xlWSht.Cells(1, i)
    xlRng.CurrentRegion.Delete

    On Error Resume Next
    xlWSht.Range("A1").Select
    xlRng.Select
    
    '------------------------------------------------------------------------------
    'Veldnamen uit de query in het werkblad plaatsen
    '------------------------------------------------------------------------------
    For Each fld In rst.Fields
        Set xlRng = xlWSht.Cells(1, i)
        xlRng.Value = fld.Name
        i = i + 1
    Next

    '------------------------------------------------------------------------------
    'Complete Recordset (tabel) naar A2 in het werkblad kopieëren
    '------------------------------------------------------------------------------
    rst.MoveFirst
    xlWSht.Range("A2").CopyFromRecordset rst

    '------------------------------------------------------------------------------
    'Namen van de tabellen aanpassen
    '------------------------------------------------------------------------------
    xlWSht.Activate
    sActie = "Vervangen van Naamreeksen in Aanvraagformulier Producten.xls"
    DoCmd.Echo False, "Bezig met: " & sActie
    Set xlRng = xlWSht.Cells(1, 1)
    xlRng.Activate
    xlRng.CurrentRegion.Select
    sAdres = Selection.Address
    mReeks = Split(sAdres, ":")
    sReeks = "=" & ActiveSheet.Name & "!$A$2:" & mReeks(UBound(mReeks))
    sReeks = "=" & ActiveSheet.Name & "!$A$2:" & mReeks(UBound(mReeks))
    y = InStr(2, mReeks(UBound(mReeks)), "$")
    tmp = Mid(mReeks(UBound(mReeks)), y + 1, Len(mReeks(UBound(mReeks))) - y)
    
    'De reeksen 'Medewerkers' en 'Zoeklijst_Medewerkers' vervangen...
    On Error Resume Next
    ActiveWorkbook.Names("Medewerkers").Delete
    ActiveWorkbook.Names.Add "Medewerkers", sReeks

    '------------------------------------------------------------------------------
    'Excel bestand sluiten en opslaan
    '------------------------------------------------------------------------------
    With xlApp.Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    sActie = "Opslaan en sluiten van werkboek Aanvraagformulier Producten.xls"
    DoCmd.Echo False, "Bezig met: " & sActie
    With xlWSht
        .Activate
        .Protect Password:="x", UserInterfaceOnly:=False
        .Visible = xlSheetHidden
    End With
    
    xlWBk.Close SaveChanges:=True
    sActie = "Afsluiten van Excel..."
    DoCmd.Echo False, "Bezig met: " & sActie
    For Each xlWBk In Workbooks
        xlWBk.Close SaveChanges:=True
    Next
    
    '------------------------------------------------------------------------------
    'Excel sessie sluiten
    '------------------------------------------------------------------------------
    On Error Resume Next
    xlApp.Application.Quit
    xlApp.Quit
    Set xlRng = Nothing
    Set xlWSht = Nothing
    Set xlWBk = Nothing
    Set xlApp = Nothing
Dit voorbeeld opent een Excel bestand, verwijdert een bestaande tabel, zet daar een nieuwe tabel voor in de plaats. Zoals je ziet: het kan, maar is een hoop code ;)
 
Laatst bewerkt:
Bedankt,

Eerst maar even nieuwe exporteren met de volgende code:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Tblprint", "workload.xls", True

Normaal als ik een excel export maak komt er een scherm naar voren waar wil je het opslaan en na het opslaan opent excel. Dit gebeurt niet met deze regel.
Hoe kan ik dat wel laten gebeuren.
 
Deze regel exporteert alleen een tabel, en er zal nooit een scherm komen of je het bestand wilt openen of niet. Bij mijn weten doet een handmatige export dat overigens ook niet.
Wil je het document vervolgens openen, dan kun je dat met een FollowHyperlink denk ik wel voor elkaar krijgen: je hebt nu een bestand, al zie ik geen padvermelding staan, en die zou ik er zeker wel bij zetten.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan