Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Anders (software)

Access Uitvoeren naar Excel & specifiek tabblad

Floor
9 antwoorden
  • Ik heb een aantal tabellen die ik vanuit Access wil exporteren naar excel. Ik krijg het echter niet voor elkaar al die tabellen in 1 excel bestand te stoppen, verdeeld over verschillende tabbladen. Momenteel komen er dus 8 excel bestanden uitgerold. (gaat via een macro)

    Ik krijg dit niet voorelkaar. In excel zelf is het automatisch toevoegen (per macro) van een apart tabblad geen probleem, vanuit Access echter krijg ik dit niet voorelkaar. Kan iemand mij een voorzet geven hoe ik dit kan oplossen? Liefst zonder kaart ;)



    (verwijzing naar Nederland-Portugal)
  • Je kan er voor kiezen om de Access-macr0 te blijven gebruiken en met een Excel-VBA-procedure die 8 bestanden samen te voegen tot een workbook. Die procedure kun je in de Access-db stallen, zodat je niet allemaal rondslingerende afhankelijkheidjes krijgt. Macro uitvoeren in Access-VBA doe je met iets als DoCmd.RunMacro "macronaam", Excel-VBA gebruik je door in het Access-VBA-project (in de VBA-editor) een verwijzing naar de MS Excel-objectbibliotheek te maken en dan een procedure te gebruiken als:

    DoCmd.RunMacro "macronaam"
    Set appXL = CreateObject("Excel.Application")\
    appXL.Workbooks.Add
    appXL.Workbooks.Open FileName:="C:\TEMP\Book1.xls"
    appXL.Cells.Select
    appXL.Selection.Copy
    appXL.ActiveWindow.Close
    appXL.ActiveSheet.Paste
    appXL.Sheets("Sheet2").Select
    appXL.Workbooks.Open FileName:="C:\TEMP\Book2.xls"
    appXL.Cells.Select
    appXL.Selection.Copy
    appXL.ActiveWindow.Close
    appXL.ActiveSheet.Paste
    appXL.ActiveWorkbook.SaveAs FileName:="C:\TEMP\Book3.xls"
    appXL.Visible = True ' of:
    appXL.Quit

    En daarbij dan nog wat instructies om tabbladen aan te maken en misschien nog een iets andere volgorde om te voorkomen dat je zoals ik (Excel 97) een melding krijgt dat er "een grote hoeveelheid tekst op het klembord" staat. Ik kan je adviseren om tijdens de ontwikkeling te beginnen met appXL.Visible = True, omdat je dan kan zien wat er gebeurt en je kan bij een evt. foutmelding ook handmatig Excel weer afsluiten. Als je die instructie er niet in zet, dan blijft Excel nl. onzichtbaar actief en moet je het proces via Taakbeheer killen om te voorkomen dat je geheugen dichtslibt.

    Ik zie in mijn Excel ook nog een functie om middels MS Query (heb ik niet geinstalleerd staan, valt dan denk ik buiten de standaardinstallatie, dus dat heeft bij mij dan eigenlijk al meteen niet meer de voorkeur) data op te halen in een database, en ik gok dat je dan gewoon een query als SELECT * FROM Tabelnaam kan gebruiken om een tabel in een sheet in te voegen. Die weg is misschien wel wat makkelijker.
  • Bedankt voor de reactie Paulus!

    Het is in ieder geval niet mogelijk om dit in de macroregel in te voeren:
    uitvoeren naar:
    exeldocument.xls/blad1$
    Ik had de stille hoop dat het op de een of andere manier daarmee kon.
    Ik ga hier morgen met jouw oplossing aan de slag :)
  • Ehm, voor zover ik weet niet, maar ik ben niet zo'n macroman (in Access dan ;)), neig altijd vrij snel naar VBA, maar ik zie in het macrovenster bij de functie TransferSpreadsheet dat je naar een bepaalde Range kan exporteren, misschien kun je daarin de sheetnaam versleutelen, ff proberen.
  • Hmm, dat bugt een beetje bij mij (Off97…), hij zegt dat ik geen tabelnaam heb opgegeven, terwijl ik wel doe en ik weet ook niet goed hoe ik met (named) ranges moet werken.
  • Och, ik ga morgen eens mt je code aan de slag. Wanneer dat werkt ben ik blij. Ik weet totaal niks af van VBA, wat ik weet is door te kijken naar de codes die macros generenen :Z Mag ik vragen welke taal jij hebt geleerd om met VBA overweg te kunnen? Ik wil toch eens een cursus daarvoor gaan volgen, ik loop zovaak tegen de beperking van "helemaal niks kunnen programmeren" aan.
  • Ik heb vba geleerd door te kijken naar wat de recorder opneemt als ik iets voordoe. Van daaruit steeds meer bijgeleerd door het veel te gebruiken in m.n. Access en ASP-scripts. Veel codevoorbeelden lezen helpt ook om nieuwe routines te ontdekken. Een korte introductie kun je op mijn site over Word-VBA lezen.
  • Volgens mij heb je nu geen vba nodig, ik zit nog even met Office 2000 te testen en dat bugt dan nog steeds wel (blij dat ik me nooit zo in die macro's heb verdiept) als in dat ik zeg dat ik geen veldnamen wil, maar dat ie die toch eigenwijs op de eerste rij van de sheet zet, maar ik gebruik dus de actie TransferSpreadsheet met argumenten:

    Transfer Type: Export
    Spreadsheet Type: Microsoft Excel 8-9
    Table Name: tabel1
    File Name: C:\Temp\Book1.xls
    Has Field Names: Okeedanwel
    Range: tabel1_of_ander_naampje

    Je kan op die manier voor bijv. 6 tabellen, 6 van die acties maken, die je naar hetzelfde bestand laat exporteren en waarbij je bij Range (Bereik) steeds een andere naam invult. Bij exporteren wordt die Rangenaam als sheetnaam aangemaakt en worden dus alle tabellen naar hun eigen sheet geexporteerd in 1 en hetzelfde bestand.
  • Er is wat tussen gekomen maar ik ga dit nog zeker even bekijken, wederom harstikke bedankt!

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.