• 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.

Import CSV - VBA Decimaalpunt wijzen in komma

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.780
In Array 9 en 11 van het te importeren bestand zijn bedragen opgenomen met een punt (.) als DecimaalSeparator.
Deze moeten omgezet worden naar bedragen met een komma (,) als DecimaalSeparator
De toevoeging van de regel .TextFileDecimalSeparator = "." geeft niet het bedoelde resultaat. Zie script "Beoogde code"

Het script "Macro1" opgenomen met de macrorecorder werkt wel maar heeft in het verdere verloop nadelige effecten.

Hoe moet het script "Beoogde code" aangepast worden om mijn doel te bereiken?

Code:
   ' Beoogde code   
ActiveWorkbook.Worksheets("Import").Select
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & TempName1, Destination:=Range("$A$8"))
        .TextFileStartRow = 1
        .TextFilePlatform = 1252
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(4, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 4, 4, 2, 2, 2, 2, 2, 2)
        .TextFileTrailingMinusNumbers = True
        .TextFileDecimalSeparator = "."
        .Refresh BackgroundQuery:=False
     End With

Code:
Sub Macro1()
    Workbooks.OpenText Filename:= _
        "D:\Downloads\Import.txt", Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
        Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
        Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
        16, 1), Array(17, 1), Array(18, 1), Array(19, 1)), DecimalSeparator:=".", _
        TrailingMinusNumbers:=True

End Sub
 
Een bestandje zegt meer dan 1000 regels code :).
 
Waarom niet via Data From Text om een koppeling maken? Kan je eenvoudig de landcode aanpassen en de connectie wordt automatisch bijgewerkt.
 

Bijlagen

Hi VenA,
Ik heb nog nooit gewerkt met Data From Text en heb geen idee hoe ik hiermee moet beginnen :o.
Na het importeren komen nog meer bewerkingen zoals de kolommen sorteren, rijen filteren en in een aantal kolommen formules kopiëren. Daarna worden de regels toegevoegd aan regels in een verzamelblad.
Ik ben nog aan het experimenteren met een macro (macro-opnemer) om in de kolommen met bedragen de punten te vervangen door een komma's. Hiermee introduceer ik weer een Select routine die ik eigenlijk niet wens.
Misschien kan het ook via een code With .... enz. Door gebrek aan kennis kom ik momenteel niet verder.
 
Tja als je alleen een tekstbestand plaatst dan is het verdere proces niet te zien.

Het script "Macro1" opgenomen met de macrorecorder werkt wel maar heeft in het verdere verloop nadelige effecten.
Ook hier zeg je eigenlijk niets.

Als je verder geholpen wil worden dan zal je wat concreter moeten zijn met een goed voorbeeldbestand en ook de code die je nu al hebt maar blijkbaar niet goed werkt.
 
Het is een complex model. Om een werkend voorbeeld te krijgen zonder privacy gedoe is nagenoeg niet mogelijk.
Je zou me kunnen helpen door een korte code te schrijven voor het omzetten van de punten in komma's van Range("I1:K" & [A65536].End(xlUp).Row) in het toegevoegd model Voorbeeld_2.xlsm.
Dit is de uitkomst van het importen van de data in Voorbeeld.txt eerder geplaatst.
 

Bijlagen

Laatst bewerkt:
Het is een complex model. Om een werkend voorbeeld te krijgen zonder privacy gedoe is nagenoeg niet mogelijk.
Is totaal geen argument om te laten zien hoe het in elkaar steekt. Dan maar zo:
<Ctrl> + h (zoek en vervang). Kan je zo met de recorder opnemen en een beetje fatsoeneren.
 
Jammer dat je daar zo over denkt.
Toch bedankt en nog een prettige avond.
 
@emileds,
TOP :thumb: korte en bondige instructie om mijn doel te bereiken. Bedankt !

Toch blijft mij de vraag bezighouden waarom bij de onderste instructie van #1 de toevoeging DecimalSeparator:="." wel werkt (Macro-opname met import wizzard) en bij de beoogde instructies ik dat niet werkend krijg. Zijn de regels .DecimalSeparator:="." of .TextFileDecimalSeparator = "." fout c.q. wat zou daar moeten staan?
 
hetzelfde maar net een klein beetje anders met een query
 

Bijlagen

Ik heb nog nooit gewerkt met Data From Text en heb geen idee hoe ik hiermee moet beginnen

Met Data from text gebruik je Power Query, de moderne en nu gebruikelijke manier om externe gegevens in Excel in te lezen. Met vba of querytables moet je dat eigenlijk niet meer willen. Google maar eens en bekijk de power van Power Query. Daar nu een paar uur insteken gaat je veel opleveren.

Na het importeren komen nog meer bewerkingen zoals de kolommen sorteren, rijen filteren en in een aantal kolommen formules kopiëren.
Allemaal bewerkingen waar Power Query voor is gemaakt. Formules zijn niet meer nodig.

Daarna worden de regels toegevoegd aan regels in een verzamelblad.
Verzamelen in Excel kan, maar waarschijnlijk volstaat om elke nieuwe export van bankmutaties steeds toe te voegen aan één master csv bestand met al je bankmutaties en die elke keer als één geheel inlezen. Maakt de verwerking veel eenvoudiger.
 
Laatst bewerkt:
hetzelfde maar net een klein beetje anders met een query

Bedankt. Het is precies waar ik op doelde. Nog even moeten worstelen om dit te transformeren naar mijn werkbestand maar ook dat is goed gelukt.
Alleen .TextFileThousandsSeparator = "," gooide roet in het eten. Deze regel heb op inactief gezet daar de punt bij duizendtallen geregeld is met de celopmaak.

Nogmaals dank.
Fijne Feestdagen en een gezond 2021.
 
@pixcel. Beste Frans, Bedankt voor je adviezen. Ga ik zeker naar kijken.

Fijne Feestdagen en een gezond 2021.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan