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

Proteus - csv data

Status
Niet open voor verdere reacties.

michielsprockel

Gebruiker
Lid geworden
7 nov 2013
Berichten
69
Hallo allemaal,

Op mijn werk gebruiken we een ERP-systeem van Proteus. Als ik de data omzet in een Excel-sheet weet ik wel hoe ik het eea geschikt kan maken om het optimaal te kunnen gebruiken. Het gebruik van de functie "tekst naar kolommen" is mij ook wel bekend. Om deze standaard bewerkingen te versnellen bundel ik verschillende opdrachten al gauw in een macro.

- als ik bv de kolom datums wil aanpassen zet ik ze in Excel eerst in het gewenste formaat (dd-mm-jj) en daarna doe ik de "tekst naar kolommen". Handmatig werkt dit prima, maar als ik de identieke functies gebruik in een macro dat blijft een deel van mijn datums als tekst staan, gewoon random door elkaar, zonder dat ik daar een regelmaat in zie.

- Als ik bv de kolom verbruikte materialen wil aanpassen voor Excel toepassing dan werkt het handmatig goed. Proteus heeft de punt als decimaal teken. Als ik een getal van 17.94523 (dus met 5 decimalen) wil omzetten, vervang ik de "." door de "," , daarna wijzig ik de celeigenschappen van standaard naar getal met nul decimalen. Dat wordt het getal 18. Handmatig gaat dit prima, maar als ik de bewerkingen in een macro vastleg, dan werkt het voor een deel van de getallen wel, maar bij dit voorbeeld met 5 decimalen staat er bij de macro-puntvervanging dan ineens géén komma, maar 2 deuzendtal-punten: 1.794.523.


Bij de datums moet ik dus altijd de bewerkingen handmatig doen net als bij de verwerkingscijfers.

Wat doe ik hierbij fout??

Groeten, Michiel
 
Fout 1:
Geen voorbeeld document en csv bestand.
 
Ik zou de volgorde eens veranderen, dus eerst inlezen en dan pas de opmaak veranderen. Overigens lees ik ook regelmatig csv bestanden in via een macro, maar ik gebruik nooit <tekst naar kolommen> en dat hoeft dus ook niet. Je kunt het bestand gewoon openen in je macro. Excel maakt er dan doorgaans een veel beter en bruikbaarder bestand van.
 
Hallo Edmoor,

Begrijpelijk dat je voorbeelden wilt, maar die had ik gistermiddag niet voor handen.
Nu dus wel.

Als eerste bijlagen, de bestanden die bij de eerste vraag horen: de datums en de omzetting naar verwerkbare datums.

De omgezette data (deel er van) staat in bestand: proteus verkoopdata tijdelijk.

De macro's staan in de macro-sheet en de overige wijst zichzelf.


Groeten,

Michiel
 

Bijlagen

  • verkoopdata-macro's.xlsm
    19,1 KB · Weergaven: 36
  • Proteus verkoopdata tijdelijk.xlsx
    46,3 KB · Weergaven: 54
  • Proteus verkoopdata tijdelijk - handmatig aangepast.xlsx
    51,6 KB · Weergaven: 43
  • Proteus verkoopdata tijdelijk - handmatig aangepast 2.xlsx
    51,7 KB · Weergaven: 43
  • Proteus verkoopdata tijdelijk - aangepast met macro's.xlsx
    52,1 KB · Weergaven: 35
  • Proteus verkoopdata tijdelijk - aangepast met macro's 2.xlsx
    52,1 KB · Weergaven: 34
En het csv bestand?
 
Hallo Edmoor,

De volgende bijlagen horen bij de 2e vraag, dus het verwerkbaar maken van de getallen.

De opbouw van de bestanden is vergelijkbaar met het probleem van de datums.

Groeten,

Michiel
 

Bijlagen

  • test-macro's.xlsm
    15,5 KB · Weergaven: 37
  • test - proteus data.xlsx
    14,7 KB · Weergaven: 53
  • test - proteus data - handmatig aangepast.xlsx
    15,2 KB · Weergaven: 38
  • test - proteus data - aangepast dmv macro's.xlsx
    15,1 KB · Weergaven: 25
Proteus zet de CSV data gelijk in een Excel-sheet.
Bij het datum vraag heet dit bestand: Proteus verkoopdata tijdelijk.xlsx
En bij het getallen heet dit bestand: test - proteusdata.xlsx

Groeten,

Michiel
 
een insteekje voor je datums
Code:
Sub Proteus()
    With Sheets("Proteus verkoopdata tijdelijk").Range("A1").CurrentRegion
        For i = 4 To 5
            .Columns(i).TextToColumns Destination:=.Cells(1, i), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True
            .Columns(i).NumberFormat = "dd.mm.yy;@"                  'voor controle even de datumnotatie wijzigen
        Next
    End With
End Sub
voor je getallen
Code:
Sub test()
    With Sheets("test").Range("A1").CurrentRegion.Columns(5)
        x = .Resize(.Rows.Count)
        For i = 2 To UBound(x)
            x(i, 1) = CDbl(Replace(x(i, 1), ".", ","))
        Next
        .Resize(.Rows.Count).Value = x
    End With
End Sub
 
Laatst bewerkt:
De data uit Proteus wordt standaard in een Excel bestand opgeslagen.
Misschien moet in mijn probleem anders stellen: als ik de data bestanden handmatig via Excel opdrachten omzet lukt het wel om de data op de gewenste manier verwerkbaar te krijgen. Zet ik dezelfde Excel opdrachten in een macro, dan werkt het niet. Hoe kan het zijn dat er een verschil zit in het handmatige opdrachten t.o.v. door de macro uitgevoerde oodrachten?
 
ik zie nu pas dat er 3 kolommen getallen zijn in test
Code:
Sub test()
    With Sheets("test").Range("A1").CurrentRegion.Columns("D:F")
        x = .Value
        For i = 2 To UBound(x)
            For j = 1 To 3
                If Len(x(i, j)) Then x(i, j) = CDbl(Replace(x(i, j), ".", ","))
            Next
        Next
        .Value = x
    End With
End Sub
En inderdaad, opgenomen macros werken niet altijd identiek als de handmatig uitgevoerde, spijtig.
Hoe werken deze als je ze verwerkt in je test-macros.xlsm en verkoop-macros.xlsm ?
 
waarom niet ?

Code:
Sub M_snb()
   Sheet1.Cells.Replace ".", ","
End Sub
 
@snb, hierom
- Als ik bv de kolom verbruikte materialen wil aanpassen voor Excel toepassing dan werkt het handmatig goed. Proteus heeft de punt als decimaal teken. Als ik een getal van 17.94523 (dus met 5 decimalen) wil omzetten, vervang ik de "." door de "," , daarna wijzig ik de celeigenschappen van standaard naar getal met nul decimalen. Dat wordt het getal 18. Handmatig gaat dit prima, maar als ik de bewerkingen in een macro vastleg, dan werkt het voor een deel van de getallen wel, maar bij dit voorbeeld met 5 decimalen staat er bij de macro-puntvervanging dan ineens géén komma, maar 2 deuzendtal-punten: 1.794.523.
 
@dank !

In dat geval:

Code:
Sub M_snb()
    Application.DisplayAlerts = 0
    Sheet1.Columns(6).Insert
    Sheet1.UsedRange.Columns(5).TextToColumns , , , , 0, 0, 0, 0, -1, ".", Array(Array(1, 1), Array(2, 1))
    Sheet1.Columns(6).Delete
End Sub
 
Mijn conclusie: Proteus maakt er een zootje van. Als ze een fatsoenlijk Excel bestand zouden produceren was al deze onzin volstrekt overbodig. Ze hadden nog beter CSV bestanden kunnen maken, dan kan je tenminste voor de hele import alles netjes instellen vanuit de Excel kant. Wat mij betreft mag je ze dit letterlijk mededelen: "Jullie Excel export is waardeloos en getuigt niet van enige Excel kennis van zaken".
 
Overigens vond ik bij Proteus alleen info over exporteren naar CSV. Heb je op jouw systeem het verbergen van extensies van bestanden aan staan? (standaard instelling van Windows). Waarschijnlijk zijn het toch CSV bestanden.
Die kan je beter alleen opslaan en dan de instructies volgen op mijn site om een importbereik in Excel te maken waarbij je telkens een nieuw csv bestand kunt aanwijzen om binnen te halen. ALle problemen opgelost.
 
volledig akkoord met de analyse van jkpieterse.

@snb, met jouw methode hou je enkel het integer-deel over.
 
Reactie op de vraag van Haje, hoe ik de opdrachten van Excel in een macro zet: door het starten (=opmaken) van een nieuwe macro de opdrachten uit te voeren zoals die normaal in Excel uitgevoerd zouden worden. Zo kun je dus veel opdrachten in je macro opnemen.
Zo gebruik ik dus via Excel wel VBA formules zonder dat je ze echt kent. Ik pas daarna in VBA wel het eea aan in mijn macro's en gebruik daarbij wel regelmatig VBA formules die ik uit het Helpmij-forum opdoe.
Nu ga ik de komende dagen jullie tips uitproberen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan