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

Txt bestand maken door gebruik van macro

Status
Niet open voor verdere reacties.

Trientje

Gebruiker
Lid geworden
9 dec 2012
Berichten
60
Goedemiddag allemaal,

Ik heb volgend probleem :
De macro doet het volgende :
Ik selecteer bepaalde lijnen van een xlsx werkblad.
Deze worden gekopieerd naar een .txt bestand en opgeslagen.

Het probleem is nu dat het decimaalteken van getallen wordt omgezet in een punt. Hierdoor worden de cijfers dus 100 groter wanneer ik het bestand inlees in vb een boekhoudpakket.
Vb 123,87 wordt 123.87
Het vreemde is dat ik het al jaren manueel doe en daarbij ondervind ik geen enkel probleem.

Het struikelblok zit hem dus in het uivoeren via een macro (vba)
 
Laatst bewerkt:
Met een voorbeeldbestandje met een paar rijen aan data en jouw macro wordt jouw vraag wat duidelijker.:)
 
In VBA moet je meegeven dat de lokale regionale instellingen moeten worden gebruikt als je het met SaveAs doet. Bijvoorbeeld:
ws.SaveAs Filename:=filestr, Fileformat:=xlCSV, Local:=True
 
Laatst bewerkt:
Ok ik bekijk dit morgen op kantoor. Ik laat asap iets seten
Groetjes
 
Mijn probleem is opgelost door functie DEEL(tekst;begin_getal;aantal_tekens).
Zo worden getallen omgezet naar tekst en hebben we geen scheidingstekens- decimalen meer.
Vba gebruikt als decimaal scheidingsteken en houdt op geen enkele manier met de regionale settings.
Zo heb ik het omzeild.
 
Laatst bewerkt:
Lokale settings worden toch echt gebruikt op de manier zoals ik zei.
Maar als je eigen oplossing ook je probleem oplost is dat prima :)
 
Ik heb het zo geprobeerd met local:= true maar 100,09 bleef in het txt 100.09. Toch bedankt voor je reactie.

Maar ik blijf zoeken en proberen om het op een correctere manier op te lossen en niet via allerlei omwegen.

Als je wilt bezorg ik morgen even de originele macro..
 
Laatst bewerkt:
Hallo edmoor,

Ik heb mijn fout gevonden
Nadat de macro
ActiveWorkbook.SaveAs Filename:="C:\Users\katrien\Documents\macrotestje.txt", _
FileFormat:=xlText, local:=True

ActiveWindow.Close
End Sub
Deed vroeg hij nogmaals om het bestand op te slaan. Als ik dan opslaan kies verandert hij de komma in een punt. Kies ik voor niet opslaan dan verschijnt de komma.

Kan je me misschien vertellen hoe je die laatste vraag kunt uitschakelen?
Groetjes
 
Dan zou ik de hele macro moeten zien.
 
Hallo



Bekijk bijlage macrotest.xlsm


hierbij de macro welke in het bestand zit:
Code:
Sub Macro1()
'
' Macro1 Macro
'

'
    Workbooks.OpenText Filename:="C:\Users\katrien\Documents\macrotestje.txt", _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
        TrailingMinusNumbers:=True
    Windows("macrotest.xlsm").Activate
    Rows("1:1").Select
    Selection.Copy
    Windows("macrotestje.txt").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:="C:\Users\katrien\Documents\macrotestje.txt" _
        , FileFormat:=xlText, CreateBackup:=False, local:=True
    ActiveWindow.Close
End Sub

dus nu vraagt hij bij de saveas of het bestand vervangen mag worden. (kan ik deze laten overschrijven zonder de vraag of het overschreven mag worden)
maar het eigenlijke probleem is :
bij activewindow.Close vraagt hij :

wilt U de wijzigingen in macrotestje.txt opslaan

als je niet opslaan kiest wordt het getal met een comma bewaard
als je opslaan kiest wordt de comma weer een punt 1,1233 wordt 1.1233
:confused:

groetjes en alvast bedankt
 
Laatst bewerkt:
Geen probleem met:

Code:
Sub M_snb()
    Columns(1).TextToColumns , , , , , False, False, False, False
    ThisWorkbook.SaveAs "G:\Of\katrien.csv", xlCSV, , , , , , , , , , True
    ThisWorkbook.SaveAs "G:\Of\katrien.xlsm", 52
     Workbooks.Open "G:\Of\katrien.csv"
End Sub
 
Katrien,

wat gebeurt er al sje
Code:
ActiveWindow.Close
uitbreid tot
Code:
ActiveWindow.Close (SaveChanges = False)
 
Haije,

dan wordt de komma toch terug een punt.

groetjes
 
Laatst bewerkt:
snb,

als ik jouw macro laat draaien dan maakt hij in het oorspronkelijk bestand al van 1,123 al meteen 1123
dus hij vermenigvuldigt al meteen met een exponent van 10 en dat mag niet niet gebeuren.
de cijfers na de comma zijn wel degelijk 1/10 en 1/100

groetjes
 
Deze doet het bij mij toch prima:

Code:
Sub BewaarAlsTekst()
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs _
        Filename:="C:\Helpmij\Trientje\macrotestje.txt", _
        FileFormat:=xlText, _
        CreateBackup:=False, _
        local:=True
    Application.DisplayAlerts = True
End Sub
 
Laatst bewerkt:
hey edmoor,

inderdaad dat doet het perfect
ik krijg melding dat het bestand al bestaat en of het vervangen mag worden wat ik dan positief beantwoord

MAAR op het einde doe ik een
Code:
 ActiveWindow.Close

daarop volgt de vraag of ik de wijzigingen wil opslaan
niet opslaan : alles perfect vb 1,23656 blijft 1.23656
opslaan : 1,23656 wordt 1.23656

en met de suggestie van haije krijg ik de vraag niet meer maar dan wordt 1,23656 weer 1.23656

groetjes
 
Ik heb er net m'n vorige bericht iets op aangepast.
 
Ik zie nu wat je bedoelde en zal er even naar kijken.
 
ja, ik dacht al dat ik iets over het hoofd gezien had :D
heb het ondertussen al geprobeerd maar het verandert niets

ik heb ondertussen al je volgende berichtje gelezen
alvast bedankt edmoor.

het is maar een kleinigheidje want op niet opslaan drukken en het is opgelost.
maar... het stoort me gewoon dat ik dit niet kan oplossen.
als ik ergens mijn tanden in zet...... een echte pitbull.

groetjes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan