[VBA Excel 2016/365] ongewenste wijziging getalnotatie >csv

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • HaraldNW
  • Registratie: April 2018
  • Laatst online: 12-05-2024
Mijn vraag:
In een VBA instructie wordt een tabblad uit een xlsm bestand opgeslagen als CSV formaat.
Daarna wordt dat opgeslagen bestand direct afgesloten. Hieronder de instructie:

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Bestandsnaam, FileFormat:=xlCSV, ConflictResolution:=xlLocalSessionChanges, AddToMru:=True, Local:=True
ActiveWorkbook.Close
Application.DisplayAlerts = True

Het probleem is dat in het csv bestand de weergave van negatieve getallen veranderd.
De getallen komen tussen haakjes te staan i.p.v. met een - teken ervoor.
Hierdoor kan het csv bestand niet ingelezen worden in Exact.
(De mogelijkheid om instellingen Exact te testen is niet aanwezig)

Het probleem doet zich niet voor als 'activeworkbook.close' niet gebruikt wordt. Met handmatig in de 2 dialoogvensters kiezen voor opslaan en 'zeker weten in csv?' doet zich het probleem niet voor.
Maar die instructie wil ik juist gebruiken voor de efficiëntie.

Weet iemand welke instelling of instructie er voor kan zorgen dat de negatieve getallen opgenomen worden in het csv bestand met een - teken eraan voorafgaand?
Wellicht dat iemand ook weet welke TekstCodePage het verschil kan maken?
Een gerichte, eenvoudige, instructie welke instellingen in Exact aangepast moeten worden om het csv bestand, waarin de negatieve getallen tussen haakjes staan, toch ingelezen kunnen worden zou ook helpen.

Wat ik al gevonden of geprobeerd heb:
Alle csv fileformats vormen geprobeerd
Niets te maken met landinstellingen die zijn goed, en met 'Local=True' zou voor de locale instellingen gebruikt moeten worden.
In het oorspronkelijke Excel bestand verschillende getalnotaties ingesteld.

[ Voor 6% gewijzigd door HaraldNW op 24-04-2018 12:43 . Reden: Aanvullende vraag toegevoegd ]

Harald

Alle reacties


Acties:
  • 0 Henk 'm!

  • Paul1987
  • Registratie: Oktober 2004
  • Laatst online: 18-09 21:35
HaraldNW schreef op dinsdag 24 april 2018 @ 12:39:
Mijn vraag:
In een VBA instructie wordt een tabblad uit een xlsm bestand opgeslagen als CSV formaat.
Daarna wordt dat opgeslagen bestand direct afgesloten. Hieronder de instructie:

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Bestandsnaam, FileFormat:=xlCSV, ConflictResolution:=xlLocalSessionChanges, AddToMru:=True, Local:=True
ActiveWorkbook.Close
Application.DisplayAlerts = True

Het probleem is dat in het csv bestand de weergave van negatieve getallen veranderd.
De getallen komen tussen haakjes te staan i.p.v. met een - teken ervoor.
Hierdoor kan het csv bestand niet ingelezen worden in Exact.
(De mogelijkheid om instellingen Exact te testen is niet aanwezig)

Het probleem doet zich niet voor als 'activeworkbook.close' niet gebruikt wordt. Met handmatig in de 2 dialoogvensters kiezen voor opslaan en 'zeker weten in csv?' doet zich het probleem niet voor.
Maar die instructie wil ik juist gebruiken voor de efficiëntie.

Weet iemand welke instelling of instructie er voor kan zorgen dat de negatieve getallen opgenomen worden in het csv bestand met een - teken eraan voorafgaand?
Wellicht dat iemand ook weet welke TekstCodePage het verschil kan maken?
Een gerichte, eenvoudige, instructie welke instellingen in Exact aangepast moeten worden om het csv bestand, waarin de negatieve getallen tussen haakjes staan, toch ingelezen kunnen worden zou ook helpen.

Wat ik al gevonden of geprobeerd heb:
Alle csv fileformats vormen geprobeerd
Niets te maken met landinstellingen die zijn goed, en met 'Local=True' zou voor de locale instellingen gebruikt moeten worden.
In het oorspronkelijke Excel bestand verschillende getalnotaties ingesteld.
Probeer dit eens als fileformat:

FileFormat:=xlCSVUTF8

Je kunt ook even naar de cell eigenschappen kijken.
Als daar een speciaal invoermasker op staat dan zou dit ook jouw problemen kunnen veroorzaken.

[ Voor 3% gewijzigd door Paul1987 op 25-04-2018 15:01 ]

Is dit het beste antwoord? Dan hoor ik dat graag!


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

HaraldNW schreef op dinsdag 24 april 2018 @ 12:39:
In een VBA instructie wordt een tabblad uit een xlsm bestand opgeslagen als CSV formaat.
Daarna wordt dat opgeslagen bestand direct afgesloten. Hieronder de instructie:

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Bestandsnaam, FileFormat:=xlCSV, ConflictResolution:=xlLocalSessionChanges, AddToMru:=True, Local:=True
ActiveWorkbook.Close
Application.DisplayAlerts = True

[..]

Het probleem doet zich niet voor als 'activeworkbook.close' niet gebruikt wordt.
Je wilt een tabblad opslaan maar gebruikt workbook.saveas? waarom niet worksheet.save. En als het probleem niet optreedt zonder activeworkbook.close gaat het daar blijkbaar mis. Nu kun je verhinderen dat close ook een save akties is door de parameter savechanges de waarde false te geven.
expression . Close( SaveChanges , Filename , RouteWorkbook )

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 09:07
Wat ook nog een mogelijkheid is, is om alle negatieve getallen om te zetten naar text. Ze gaan dan naar alle waarschijnlijkheid wel goed mee in de csv-export.

De last-resort is om met een (handmatige) find-replace op de csv- file het linkerhaakje te vervangen met "-" en het rechterhaakje met "" (niks).
Soms (vooral als het een éénmalige actie is) is snel en lelijk oplossen nu eenmaal efficiënter 8) .

[ Voor 16% gewijzigd door breew op 25-04-2018 15:47 ]


Acties:
  • 0 Henk 'm!

  • HaraldNW
  • Registratie: April 2018
  • Laatst online: 12-05-2024
Bedankt voor alle reacties. Ik ga e.a. uitproberen en laat het weten zodra dat gelukt is. Zal wel eind mei 2018 zijn.

Harald