Export to csv file

Status
Niet open voor verdere reacties.
Dit is een andere foutmelding dan het verhaal over de export definitie. Ik ben dus nu het spoor bijster: Je bent aan de slag gegaan met mijn verhaal over het helemaal doorlopen van de wizard (dus uit posting #18)?

Tijs.
 
@OctaFish: Zie de laatste bijlage van posting #5 dat er wel degelijk een export specificatie is opgeslagen en dus (naar ik aanneem) ook effectief gebruikt kan worden in VBA code? [Dus dat een versie van Access wordt gebruikt die wél export specificaties etc. gebruikt/toestaat]?
Je kunt een 'exportdefinitie' wel opslaan, maar dat zijn meer de stappen die je zet bij het uitvoeren van een export, niet de gegevensinstellingen. Dat kon je wél in oudere versies van Access t/m 2003, maar dat bestaat dus niet meer. Dat je in de VBA code nog wel een exportdefinitie kan meegeven, is waarschijnlijk een compatibiliteit kwestie. Omdat, voor zover ik weet, een definitie die in een geconverteerde db zit, dus wél gebruikt kan worden. Maar je kan ze niet meer aanmaken. Wat dus verwarring wekt.

Wat wél kan, is een ini bestand maken waarin je de export gegevens vastlegt. Dat is echter veel meer werk, dus je snapt dat in de Access wereld enige onvrede heerst over de huidige situatie.
Omdat ik op vakantie ben, en dus wat minder achter een pc kan zitten, heb ik het draadje even laten lopen, maar ik snap dat TS er zo dus niet uitkomt. Vandaar dat ik toch maar ben ingesprongen :).
 
Hoi Tijs,


Eerst mijn verontschuldigingen. Ik zie nu pas uw post van 15:21
Die had ik niet gezien toen ik mijn post van 15:47 maakte.

Misschien stom zeker maar ik heb in de query twee vragen. (tussen [ ] )
Bij export naar .csv krijg ik de melding "Er zijn te weinig parameters. Het verwachte aantal is : 2
Dus ik vermoed dat ik niet rechtstreeks naar een .csv kan exporteren.
Want ik wil gerust u procedure uitvoeren maar lukt mij niet.
Daarom was een work-around converteren van .xlsx naar .csv

Of vergis ik mij dat je toch kan exporteren van een query met twee 'ingebouwde' vragen ?

Alvast bedankt.
 
Ik geef het op: De melding blijkt nu ineens niet meer te gaan over de te gebruiken export definitie die niet gevonden wordt door Access maar over iets anders.

Tijs.
 
Nu weet ik niet of dergelijke query kan geëxporteerd worden via .csv.
Fijn dat je alleen van Tijs antwoord wil, maar die heeft er zo te zien geen zin meer in. Dus toch maar een (ongewenst?) antwoord:
Simpel antwoord: nee. Gebruik voor exports sowieso geen queries met vragen erin (parameters) maar vang die opties af via een formulier. Zet de gegevens vervolgens hard in de query door de SQL ervan aan te passen via de QueryDefs collectie.
 
@OctaFish: Jouw antwoorden behoren nooit ongewenst te zijn (net als die van andere helpers, even afgezien van trollen en degenen die reageren zonder voldoende kennis van zaken). :D

Tijs.
 
@dnties: weet ik :D. Maar TS maakt een fout die wel vaker gemaakt wordt: de draad personificeren :). Ik vat 'm niet persoonlijk op :).
 
Hoi Tijs, OctaFish en anderen,


Efkes voor de duidelijkheid want Access en zijn comptabiliteit ......

Omdat het probleem met exporteren naar een .csv maar niet wou lukken heb ik eens geprobeerd om het via .xlsx te proberen.
Ook om na te gaan is het een Access software probleem, een database probleem, .....
Daarom heb ik eens geprobeerd te exporteren naar .xlsx.
En, wonderbaarlijk, dat lukt.
Toen dacht ik, kan je ook een .xlsx bestand, converteren via vba met wel de juiste 'instelling' tabel naar een .csv bestand.
Want ik heb de vorige opties allemaal geprobeerd en lukt mij maar niet.
De procedure van Tijs doorlopen maar helaas.
Ik heb ook een macro gemaakt en die geëxporteerd. Dan kan je wel xlCSV kiezen in de vba code.
Maar krijg je een Function in vba.
Maar hoe roep je zo'n Function aan ?

Dus, als ik OctaFish, goed begrijp is het zeer moeilijk om in Access 2010 een .csv export instellingsbestand te maken.
Of toch te exporteren naar een .csv bestand.

Daarom probeer ik via .xlsx.
(als er maar een oplossing komt :) )

Dus Tijs, sorry als ik u in de verwarring heb gebracht maar hopelijk snap je nu mijn redenering om via .xlsx te gaan.

Dus ik weet niet of iemand de code kent om van een .xlsx bestand via vba op te slaan naar een .csv met de juiste instelling.

En Tijs, OctaFish en alle anderen van dit forum. Ongeacht uw bijdragen ik waardeer zeer zeker de hulp die jullie bieden.
Maar soms, in alle drukte op het werk, zijn de mails wat botter of komen onpersoonlijk over.
Of soms te persoonlijk als ik namen noem :)
Dit had ik gedaan omdat ik de post niet had gezien en een nieuwe melding had aangemaakt.

En die zelfs op vakantie reageren is meer dan tof.

Dit om alle misverstanden te vermijden.

Nogmaals dank aan allen.
Maar hopelijk is er iemand die mij verder kan helpen :)
 
Laatst bewerkt:
Hier is vba code.

Maar op welke manier kan ik zo'n code aanroepen ?
Ik weet ook niet of, als je exporteert, kan je kiezen om vb de " niet rond de tekst te hebben.



Function ConvertXls2CSV(sXlsFile As String)
On Error Resume Next
Dim oExcel As Object
Dim oExcelWrkBk As Object
Dim bExcelOpened As Boolean 'Was Excel already open or not
'Review 'XlFileFormat Enumeration' for more formats
Const xlCSVWindows = 23 'Windows CSV Format
Const xlCSV = 6 'CSV
Const xlCSVMac = 22 'Macintosh CSV
Const xlCSVMSDOS = 24 'MSDOS CSV

Set oExcel = GetObject(, "Excel.Application") 'Bind to existing instance of Excel

If Err.Number <> 0 Then 'Could not get instance of Excel, so create a new one
Err.Clear
On Error GoTo Error_Handler
Set oExcel = CreateObject("excel.application")
bExcelOpened = False
Else 'Excel was already running
bExcelOpened = True
End If

On Error GoTo Error_Handler
oExcel.ScreenUpdating = False
oExcel.Visible = False 'Keep Excel hidden from the user
oExcel.Application.DisplayAlerts = False

Set oExcelWrkBk = oExcel.Workbooks.Open(sXlsFile)
'Note: you may wish to change the file format constant for another type declared
' above based on your usage/needs in the following line.
oExcelWrkBk.SaveAs Left(sXlsFile, InStrRev(sXlsFile, ".")) & "csv", xlCSVWindows
oExcelWrkBk.Close False

If bExcelOpened = False Then
oExcel.Quit
End If

Error_Handler_Exit:
On Error Resume Next
Set oExcelWrkBk = Nothing
Set oExcel = Nothing
Exit Function

Error_Handler:
MsgBox "The following error has occured." & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: ConvertXls2CSV" & vbCrLf & _
"Error Description: " & Err.Description, _
vbCritical, "An Error has Occured!"
Resume Error_Handler_Exit
End Function


Alvast bedankt.
 
Qua VBA is mijn kennis 'basic', dus ik kan je hier niet zinvol bij helpen. Hopelijk komt er hulp van anderen.

Tijs.
 
No prob.
Wil je toch bedanken voor alle effort die je al gedaan hebt.
 
Even mijn 2 cent's inbrengen voor zover het die waard zijn: export to csv is iets dat vroeger inderdaad prima te regelen was maar met de "updates" van Ms Access reeds lang niet meer werkt (die windowsboys sloopten van alles uit Access dat goed werkte of waar dat ze dank zij hun updates geen weg meer mee konden, denk maar aan de calendar controls). Internet staat ook bol met niet werkende oplossingen en dus gaf ik het ook op en los ik het al jaren op door een VBA export te doen naar xlsx, dat bestand dan automatisch openen en dan effekes F12 duwen en opslaan als CSV. Duurt nog geen minuut langer maar lukt altijd.
 
Efkes een update.
Ik heb een commando gevonden om in vba een .xlsx op te slaan als .csv bestand

Full_name = naam van het bestand met de extensie .xlsx
Filename = bestandsnaam zonder een extensie
Deze variabelen worden in de code opgevuld.

Vb full_name = test.xlsx
filename = test

Hier de code :

Dim mobjExcApp As Object
Set mobjExcApp = CreateObject("Excel.Application")

With mobjExcApp
.Workbooks.Open ("c:\temp" & full_filename)
.Visible = False
mobjExcApp.ActiveWorkbook.SaveAs ("c:\temp" & filename & ".csv"), FileFormat:=6
End With


Nu heb ik nog één probleem :)

In de .csv bestand heb ik een header. Maar dat wil ik niet.
Ik kan niet onmiddellijk op internet vinden om een bestand op te slaan zonder header.

Alvast bedankt.

Kan dit ook met het commando mobjExcApp.ActiveWorkbook.SaveAs ?
 
Ook om na te gaan is het een Access software probleem, een database probleem, .....
Daarom heb ik eens geprobeerd te exporteren naar .xlsx. En, wonderbaarlijk, dat lukt. Toen dacht ik, kan je ook een .xlsx bestand, converteren via vba met wel de juiste 'instelling' tabel naar een .csv bestand.
Jouw probleem ligt niet aan Access, noch aan Excel. Dat de export naar Excel wél lukt is pure logica: dat is een heel ander export format. Kun je niet met elkaar vergelijken. CSV is een tekstformat, XLSX is een Excel format.
Als de export vanuit Excel naar CSV goed gaat, gaat hij ook goed vanuit Access. Maar een tekstuitvoer vereist nu eenmaal dat je de juiste scheidingstekens gebruikt; anders gaat de export fout. Dat geldt dus voor alle programma's van waaruit je die export wilt maken. Je zult de juiste opmaak mee moeten geven. Als Excel de juiste opmaak niet aanlevert, heeft de omweg vanuit Access dus ook geen enkele zin.
Overigens zou het fijn zijn als je de code kunt opmaken met de CODE tags, dan wil ik er wel even naar kijken :). Nu vrees ik voor een muisarm :).
 
Hoi,


Nu ben ik u efkes kwijt :)

Overigens zou het fijn zijn als je de code kunt opmaken met de CODE tags, dan wil ik er wel even naar kijken . Nu vrees ik voor een muisarm .

Wat bedoel je hiermee ?
Ik heb een code waarmee ik kan opslaan naar .csv.
Maar nu met header (titels) en dat moet niet.
Is vanuit Access een export voor een ander bedrijf dat zo'n .scv verwacht.

Alvast bedankt.
 
Code tags zijn dat je je (VBA-)code tussen
Code:
[/noparse][/b] en [b][noparse]
zet, zodat het beter leesbaar is.

Tijs.
 
Hoi,

Ik gebruik onderstaande commando en toch heb ik een header (titel)

Code:
 DoCmd.TransferSpreadsheet acExport, 10, "export", "c:\temp" & full_filename, False

False = zonder headers.

Is dit ook een bug ?

Want van dit .xlsx bestand maak ik een .csv bestand.
Maw als ik een .xlsx export zonder header kan maken is het probleem met .csv opgelost :)

Dit is de code die ik gebruik om van een .xlsx bestand een .csv bestand van te maken.

Code:
Dim mobjExcApp As Object
Set mobjExcApp = CreateObject("Excel.Application")

With mobjExcApp
.Workbooks.Open ("c:\temp" & full_filename)
.Visible = False
mobjExcApp.ActiveWorkbook.SaveAs ("c:\temp" & filename & ".csv"), FileFormat:=6
End With


En het veldscheidingsteken = , ipv ;.

Dus nog twee problemen :

1) Ik wil geen headers in de .csv (maar geen titel in de .xlsx is ook geen probleem.
2) Veldscheidingsteken in .csv moet ; (en niet ,)


Ik denk/vermoed dat punt 1 niet op te lossen is. Dat wordt gebruikt bij import. Dan kan je aangeven of de eerste regel titels of data zijn.
Bij export worden de titels altijd geëxporteerd.

Er is een liedje dat gaat : wij zijn er bijna maar nog niet helemaal :) :) :)

Alvast bedankt.
 
Laatst bewerkt:
Ad 1: je slaat een Access tabel op als een Excel tabel. Krijg je altijd headers, is niks aan te doen. Sla je een bestand op als csv, dan kun je er wél voor kiezen om zonder header op te slaan. Omdat de Docmd regel een uniforme opbouw heeft, lijkt het alsof je kunt kiezen (met of zonder header) maar dat werkt dus alleen bij de juiste exportvariant. Bij xls doet dat niks.
Ik blijf er bij dat je prima vanuit Access kunt exporteren naar csv. Ik zie al de heisa dus eigenlijk wel enigszins geamuseerd aan vanuit het vakantiehuisje :).
 
Je bedoelt via het schema.ini bestand kan je exporteren naar een .csv bestand.
Wat op Google gekeken maar als ik elk veld manueel in de file moet zetten ?????
Of kan je ook enkel de 'echte' headers aanmaken.
Dus zonder de velden.
Iets in de stijl van :

[TrialBOYDtl.csv]
ColNameHeader = True
Format=CSVDelimited
TextDelimiter="

Ik kan het natuurlijk ook eerst testen :)

Ohja, wat ik zeer vreemd vind is dat via menu - externe exportgegevens de 'config' file (definitie file) staat en via uitvoeren het .csv wel wordt aangemaakt.
Maw je kan de definitie file wel aanmaken en manueel uitvoeren.
Maar via de vba code kent Access de definitie file niet.

Is dat normaal ???

Alvast bedankt.
 
Ad 1: dat schema.ini file kun je makkelijk automatisch maken met een script, dat je tabel uitleest en de velden (en eigenschappen) in dat bestand zet. Dus dat maken valt wel mee.
Ad 2: zoals ik al zei: de VBA opdracht komt uit vorige versies en moet daar compatibel mee zijn. Ik vermoed zelfs dat oude exportdefinities vanuit vorige versies wel degelijk mee worden genomen bij de conversie, maar dat je er dus niet meer bij kan als gebruiker. Maar ze nog wel kunt aanroepen. Niet geprobeerd overigens :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan