query(uitslag) exporteren naar xlsx

Status
Niet open voor verdere reacties.

Bospeen

Gebruiker
Lid geworden
23 aug 2005
Berichten
150
Goedemiddag forumleden,

Ik heb een query "Qu_007" waarvan ik de uitslag in Excel wil zien, ook als er méér dan 65.536 rijen zijn. Ik gebruik Office 2013 en probeerde het als volgt...

Code:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Qu_007", "c:\temp\query_007.xlsx", True, "Blad1"

Het bestand wordt aangemaakt, maar is onleesbaar. Ook bij export naar xls verschijnt er een waarschuwing over de bestandsindeling, maar het is wel leesbaar.

Heeft iemand hier ervaring mee? Of kan ik beter een andere methode gebruiken?
 
Je kunt beter een Excel bestand maken dat je koppelt aan de query. Heb je ook altijd de actuele gegevens paraat, dus je hoeft nooit meer opnieuw te exporteren.
 
Ik heb dit geprobeerd, maar dit gaat niet:

1. de query is bij instellen van de gevensbron in Excel niet zichtbaar (waarom niet???)
2. de query bevat criteria die gebruikers in een formulier moeten invullen... doen ze dit niet, dan komt de query niet terug met een uitslag (i.v.m. overschrijding DB grootte)
 
Punt twee geeft antwoord op punt 1, dus dat scheelt mij werk :). Dat soort informatie is essentieel als het gaat om het beantwoorden van dit soort vragen. Je kunt dus alleen koppelen met queries met daarin vaste waarden. Of met tabellen uiteraard.
Dan is de oplossing dus heel simpel: pas je query aan, of maak een tijdelijke tabel (eigenlijk hetzelfde antwoord, want je moet nog steeds een query aanpassen). Zelf gebruik ik zelden criteria in queries, dat heb ik ondertussen wel afgeleerd.

Mijn werkwijze is tegenwoordig heel simpel: ik gebruik een ‘vaste tijdelijke’ query waarvan ik steeds de SQL aanpas op basis van wat er in het formulier gebeurt. Dus ik gebruik een QueryDef om een queryobject te maken dat ik aan de tijdelijke query koppel en daarvan vervang ik dan de SQL. In die SQL zitten dan de filters, met de waarden uit het formulier, en nooit de velden. Iets wat de meeste mensen overigens nog steeds doen. Wat dat betreft ben ik nog steeds een roepende in een hele grote woestijn :).
 
Dank voor je uitgebreide antwoord. Je noemt je werkwijze heel simpel, maar ik kan je niet helemaal volgen hoor. Ik heb het inmiddels anders opgelost...
een formulier gemaakt (gegevensblad) op basis van de query en dit formulier met de volgende code geëxporteerd naar xlsx (dit gaat ook zonder het formulier te openen)
Code:
DoCmd.OutputTo acOutputForm, "Frm_007", acFormatXLSX, "c:\temp\query_007.xlsx"
Ik dacht dat dit niet kon naar xlsx, maar het werkt probleemloos :D
 
Laatst bewerkt:
:( alweer te vroeg gejuichd… er wordt weliswaar een mooi xlsx-bestand aangemaakt, maar grote query-uitslagen worden hierin toch afgekapt op 65.536 rijen.
Wat is dat toch tussen Access en Excel?
 
Het verbaasde me hogelijk dat je 'oplossing' uit #5 probleemloos werkte, want die lost totaal niks op aan je probleem. En zeker van dit stukje "(dit gaat ook zonder het formulier te openen)" schoten de wenkbrauwen rechtstandig omhoog :). De techniek achter de uitwisseling is inderdaad nogal bejaard en gebaseerd op oude formats. Ik blijf bij mijn werkwijze :D. Zoek in dit forum maar eens op QueryDefs, en je zal zien hoe simpel het is.
 
Dat ga ik eens doen.
Ondertussen verder gezocht... wat wel probleemloos werkt met grote queryuitslagen is
Code:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Qu_007", "c:\temp\query_007.xlsx", True
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan