• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Officeversie van invloed op csv-lijstscheidingsteken ?

Status
Niet open voor verdere reacties.

snb

Verenigingslid
Lid geworden
12 jun 2008
Berichten
19.728
Geacht forum,

Sommigen van u lijken de beschikking te heben over diverse versies van Excel.
Het lijkt erop dat die verschillende versies andere dingen doen met de export van gegevens naar een csv-bestand.
Het ene Excel-programma produceert een bestand met als lijstscheidingsteken een komma ( , ), het ander gebruikt daarvoor de puntkomma ( ; ). In beide gevallen zijn de internationale instellingen van Windows identiek:
- lijstcheidingsteken puntkomma ( ; ),
- decimaalscheidingsteken een komma ( , ) en het
- getallenreeksscheidingsteken een punt ( . ).

Dan blijven ter verklaring van het verschil 2 mogelijke variaties over:
de versies van Excel (200, 2003 en 2007)
de eigenschappen van Office: de Nederlandstalige versie vs. de Engelstalige versie.

Mijn vermoeden is dat het aan de taalversie van Office ligt.
Mijn vraag is nu;
- kunnen bezoekers van dit forum bevestigen dat de Engelstalige Officeversie bij de opslag van een csv-bestand de komma als lijstscheidingsteken gebruikt (en en passant aanhalingstekens toevoegt aan cellen die een komma bevatten) ?
- kunnen bezoekers bevestigen dat de Nederlandstalige Officeversie hiervoor de puntkomma gebruikt (zodat ook de toevoeging van aanhalingstekens overbodig is) ?

Het gaat mij om de volgende aktie:

Code:
Sub bewaar()
   Activeworkbook.Saveas "C:\test", xlcsvWindows
End Sub

Alvast bedankt voor het meedenken...
 
Laatst bewerkt:
Voor het geval je hier wat aan hebt:

In de NL versie van Excel 2003 levert test.csv de volgende gegevens op:

3,fiets,3.50,8.8,"8,000","8,001"
5,jas,4.80,9.2,8000,"8,001"
7,puntmuts,8.80,7.6,7000,"7,001"

Zie hieronder welke invoer ik heb gebruikt:
attachment.php

Kolom C is geformatterd getalnotatie 2 achter de komma
Kolom A, B, D, E en F zijn notatie Standaard
In D staan 'strings' vindt Excel (want geen komma's gebruikt en zijn < 1000)
F is de waarde van de corresponderende waarde in E+1 (Formule: =E1+1)

In de opties staat aangegeven als decimaalteken: , (niet aanpasbaar)
In de opties staat aangegeven als scheidingsteken voor 1000-tallen: . (niet aanpasbaar)

Kortom: Bij de 'export' naar CSV via jouw 'macro' wordt het omgezet naar het Engelse/Amerikaanse systeem, waarbij (vreemd genoeg) de berekende waarde van kolom F altijd met een duizendtalseperator wordt opgeslagen.
De 'strings' 8.8, 9.2 en 7.6 in kolom D worden NIET apart 'behandeld'.

Ik heb het gebruikte Excel document ook als bijlage erbij gedaan.

Succes,

Tijs.
 

Bijlagen

  • excel2003_csv.JPG
    excel2003_csv.JPG
    12,9 KB · Weergaven: 1.093
  • test.xls
    29 KB · Weergaven: 56
Laatst bewerkt:
Dnties

Hier heb ik zeker wat aan; bedankt.
Wat ik hier aan heb weet ik pas als ik ook resultaten van anderen heb.
Nog een korte vraag: jij zegt dat je Excel 2003 NL-versie hebt. Waar lees jij dat uit ?
Ik doe dat bij Excel 2000 bij 'Microsoft office taalinstellingen'.
 
De installatie en de gebruikersinterface en het splash scherm en de spellingchecker en de setup.htm en de hulp-functie (etc.) zijn Office-breed Nederlandstalig, dus ik gebruik een NL versie van Office 2003 nu. ;)

Tijs.
 
Hallo snb,

Voor zover ik weet werkt de methode SaveAs default met de amerikaanse lijstscheidingstekens (de ,). Wil je dit veranderen en wel volgens de instelling van het configuratiescherm, dan moet je als argument Local:=true meegeven.
Zie daartoe ook de help van de methode SaveAs.
 
Dag Snb

Ik heb de test uitgevoerd in een virtuele machine, met daarin WIN 2003, Office 2003, alle regional settings op English (United States).

Resultaat:

- lijstscheidingsteken: komma
- decimaalscheidingsteken: punt
- getallenreeksscheidingsteken een komma
- dubbele quotes ingeval van een komma in het getal

Wigi
 
Wigi,

Dank, dank.
En als de regionale instellingen naar NL gaan ?

Ik vermoed nu dat het te maken heeft of alle textconverters van Office wel/niet geïnstalleerd zijn. (ik vermoed de bestanden DelimDos.FAE, DELIMWIN.FAE in Program Files/Microsoft Office/Office/Convert)
Het gaat er mij namelijk om: wat moet ik aan instellingen wijzigen om Excel een csv bestand weg te laten schrijven met puntkomma als lijstscheidingsteken. (het instellen van het lijstscheidingsteken werkt niet 100 %).

Benieuwd naar je reaktie.

@thoralf

Dank voor je input; Blijkbaar is de optie 'Local' bij de methode SaveAs - bij mij althans - een verborgen optie, want ik kom hem nergens tegen.
 
Laatst bewerkt:
Dag Snb

Nog niet kunnen testen.

Wel de syntax van SaveAs, in bijlage.

Wigi
 

Bijlagen

  • Doc1.doc
    82 KB · Weergaven: 105
@Wigi,

Dank, dat lijkt wel Excel 2007 ! ;);)
Was in ieder geval nog geen optie in Excel 2000.
Ga het testen.
 
Snb

Als ik de Regional settings op Dutch (Belgium) zet, krijg ik hetzelfde resultaat als hierboven opgelijst.

Kies ik naast die Dutch (Belgium) voor Customized, dan zie ik wel instellingen zoals men ze zou verwachten: lijstscheiding ; decimaal , en groepering ,

Raar?

Wigi
 
De optie Local doet de truc in Excel 2007.

Geciteerd uit de kennisbank van Microsoft:

De uitgangswaarde (default) van de optie Local van de methode SaveAs is False. Dat betekent dat de taal van VBA (immer Amerikaans) wordt genomen voor het bepalen van het lijstscheidingsteken. (lijst: komma; decimaal punt, duizendtallen: komma)
Als de optie Local op True wordt gezet, worden de waarden van de landinstellingen (regional setting) in Windows gebruikt.

Blijft d evraag staan of dit ook voor Excel 2003 geldt.
Bovendien de vraag of het met Excel 2000 (in ieder geval zonder de optie Local) in alle gevallen goed gaat, zodat de puntkomma het lijstscheidingsteken is.
 
Hallo snb,

Bijgaand de help teksten uit Excel 2003 en 2007 VBA.
Ik heb het nu niet getest, maar ik heb het volgens mijn geheugen eerder toegepast in 2003 en het werkte daar.

Nog snel even een test gedaan met jouw bestand in excel 2003: Resultaat bijgevoegd (omdat .csv niet wordt geaccepteerd de extensie veranderd in .txt)
 

Bijlagen

  • SaveAs.doc
    64,5 KB · Weergaven: 104
  • test.txt
    92 bytes · Weergaven: 60
Laatst bewerkt:
Thoralf,

Dank. Weer een hoop wijzer.

De opzet is natuurlijk wel een beetje tegen de filosofie van MS in: windows was nu juist bedoeld om het aantal instellingen in afzonderlijke programma's te beperken. Het was logischer geweest als de default voor SaveAs de landinstellingen van Windows waren.

Enige vraag die nu nog overblijft is of er mensen zijn met Excel 2000 bij wie SaveAs met puntkomma als scheidingsteken niet lukt. Als dat het geval zou zijn, zou daarvoor een andere methode dan de optie Local (die in E 2000 nl. ontbreekt) moeten bestaan.

Tot nog toe alle meedenkers bedankt voor het denk-en testwerk !!
 
Ten aanzien van Excel 2000 heb ik geen idee hoe daar de zaak op te lossen.
Ook heb ik even geen idee hoe het geregeld is in Excel XP (2002). Het zou daar wel eens gelijk kunnen zijn aan 2003. Heb daar niet naar gekeken, maar als er eens een paar uurtjes over zijn (voorlopig nog even niet te verwachten) zou ik daar naar kunnen kijken. Maar is voor mij nu niet meer zo interessant.

Succes met het vinden en implementeren van de oplossingen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan