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

CSV Macro

  • Onderwerp starter Onderwerp starter ir19
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ir19

Gebruiker
Lid geworden
3 jan 2019
Berichten
21
Goedendag,

Ik heb een excel bestand met daarin de volgende macro:

Code:
Sub Opslaan_CSV()
    Dim facname As String
    Dim LR As Long

    'Bepaal de laatst gebruikte regel in kolom T
    With ActiveSheet
        LR = .Cells(.Rows.Count, "J").End(xlUp).Row
    End With
    
    'Zichtbare zaken en meldingen uit zetten
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
    'Bepaal de plaats en naam van het CSV bestand
    facname = "H:\XXXX.csv"
    
    'Kopiëer het benodigde gebied
    Sheets("BladX").Range("A10:T" & LR).Copy
    
    'Voeg een werkboek toe
    Workbooks.Add
    
    'En plaats daar het gekopiëerde gebied in
    ActiveSheet.Paste
    
    'Sla dat werkboek op als CSV bestand en sluit deze
    With ActiveWorkbook
        .SaveAs Filename:=facname, FileFormat:=xlCSV
        .Close
    End With
    
    'Zichtbare zaken en meldingen aan zetten
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

Hier komt het bestand werkelijke output uit. Ik zou dit echter zoals gewenste output willen hebben (dit is ook een CSV maar dan in kolommen).

Kan iemand mij hiermee helpen?

Gr
 

Bijlagen

Laatst bewerkt door een moderator:
Plaats even een voorbeeld documentje met de gegevens uit A10:T? die je naar CSV geconverteerd wil hebben.
 
Dat is dit blad. het bestand zelf is uitgebreider maar dat is niet van belang. Van dit blad moet de selectie naar een CSV in kolomen gezet worden.
 

Bijlagen

Dan wordt het zoiets:
Code:
Sub NaarCSV()
    With ActiveSheet
        LR = .Cells(.Rows.Count, "J").End(xlUp).Row
    End With
    
    csv = FreeFile
    facname = "H:\XXXX.csv"
    
    Open facname For Output As #csv
    For i = 10 To LR
        Print #csv, Cells(i, 1) & ";" & _
                    CLng(Cells(i, 2)) & ";" & _
                    Cells(i, 3) & ";" & _
                    Cells(i, 4) & ";" & _
                    Cells(i, 5) & ";" & _
                    Cells(i, 6) & ";" & _
                    Cells(i, 7) & ";" & _
                    Cells(i, 8) & ";" & _
                    Cells(i, 9) & ";" & _
                    Cells(i, 10) & ";" & _
                    Cells(i, 11) & ";" & _
                    Cells(i, 12) & ";" & _
                    Cells(i, 13) & ";" & _
                    Cells(i, 14) & ";" & _
                    Cells(i, 15) & ";" & _
                    Cells(i, 16) & ";" & _
                    Cells(i, 17) & ";" & _
                    Cells(i, 18) & ";" & _
                    Cells(i, 19) & ";" & _
                    Cells(i, 20) & ";"
    Next i

    Close #csv
End Sub
 
Toch nog een opmerking kolom B moet een datum notatie blijven dd-mm-yyyy er wordt het cijfer van deze datum aan gegeven.

43466 moet dus zijn 1-1-2019


En kolom i als getal
 
Laatst bewerkt door een moderator:
In je Gewenste output staat er een 0, vandaar.
Maar voor de regel met Cells(i, 2):
Code:
IIf(CLng(Cells(i, 2)) = 0, 0, Format(Cells(i, 2), "dd-mm-yyyy")) & ";" & _

En kolom I (9):
Code:
Cdbl(Cells(i, 9)) & ";" & _
 
Laatst bewerkt:
Kan dit getal ook met standaard 2 cijfers achter de komma?
 
Zeker:
Code:
Format(Cells(i, 9), "#0.00") & ";" & _
 
De cijfers geven nog geen 2 decimalen bij een 0 of 0,1
 
Hier wel in kolom I

Code:
0;25-01-2019;0;700150;5;0;0;;2,25;0;;;;;;;;;;;
0;0;0;700150;6;0;0;;0,00;0;;;;;;;;;;;
 
Alternatief:

Code:
Sub M_snb()
  Sheet1.Cells(10, 1).CurrentRegion.Resize(, 10).Copy
   
  With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .GetFromClipboard
    CreateObject("scripting.filesystemobject").createtextfile("G:\OF\output.csv").write Replace(.GetText, vbTab, ";")
  End With
End Sub
 
Beste snb, Met deze macro wordt er een kader omheen gezet hij slaat hem niet op.

@edmoor, helaas werkt dit niet. De gehele macro werkt perfect alleen moet van kolom i de in detal ''getal'' gemaakt worden dan werkt het maar dit krijg ik niet de in macro.
 
Laatst bewerkt door een moderator:
Plaats dan eens je je voorbeeld document incl. die code.

Overigens werkt de code van snb ook prima.
Je moet alleen CutCopy mode even op False zetten.
 
Laatst bewerkt:
Heb je het pad van het bestand in de macro wel aangepast ?
 
Je hebt "#0.00" gewijzigd in "#.00" in je eigen code en dat is fout.
 
Dan moet dat bestand gemaakt zijn.
 
@edmoor ook met '''#0.00'' komt er geen getal notatie in kolom i.
is het niet mogelijk op het einde heel kolom i getal te maken
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan