• 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 bestanden naar XLS omzetten

Status
Niet open voor verdere reacties.

JANHooyman

Gebruiker
Lid geworden
8 okt 2021
Berichten
49
Hallo,
Omdat het programma Crystal Reports niet kan omgaan met CVS bestanden wil ik deze omzetten naar XLS bestanden.
Ik heb een map bv C:\DATA waar een paar CVS bestanden in staan, deze wil ik allemaal omzetten naar XLS bestanden, CSV bestand mag blijven staan wordt toch steeds weer overschreven.
Dit geldt ook voor het XLS bestand deze wordt elke keer overschreven, de benaming moet gelijk blijven.

Wie heeft hier een VBA macro voor.
Bij voorbaat dank
Jan Hooyman
 
Ik neem aan dat je CSV bedoelt.
Dubbelklik op zo'n bestand zodat deze opent in Excel.
Opslaan als .xlsx

Of een voorbeeld van zo'n CSV bestand want deze kunnen op meerdere manieren geschreven zijn.
 
Laatst bewerkt:
Code:
Sub M_snb()
  Application.DisplayAlerts = False
  With Workbooks.Open("J:\download\ACOB_overige_04_2022.csv")
    .SaveAs Replace(.FullName, ".csv", ""), 51
    .Close
  End With
End Sub
 
hallo snb,

Bedankt voor jou bijdrage maar iets gaat niet goed.
Er wordt 1 bestand vd 3 omgezet naar een XLS met een onjuiste weergave zie bijlage.

Jan
 

Bijlagen

  • IMG_8319.jpg
    IMG_8319.jpg
    2 MB · Weergaven: 33
Een beeldschermafdruk kan je beter maken ALT+PRINT SCREEN.
Daarna CTRL-V in je favoriete teken programma.
 
Test:

Code:
Sub M_snb()
   Application.DisplayAlerts = False
   With Workbooks.Open("J:\download\ACOB_overige_04_2022.csv", Local:=True)
       .SaveAs Replace(.FullName, ".csv", ""), 51
       .Close
    End With
End Sub
 
Laatst bewerkt:
Klopt Edmoor,

Maar ik ben nu ingelogd via Macbook, en de macro gebruik ik op windows pc, dus effe snel een foto gemaakt.
Maar goed het werkt niet deze macro helaas
 
Het heeft geen zin deze macro op een andere PC dan de beoogde te testen.

En gebruik dan eens de code in #7
 
Laatst bewerkt:
SNB

De toevoeging Local:=True) was de oplossing, het CSV bestand is nu correct omgezet in een XLS bestand.
Maar dit is 1 bestand, er bevinden zich steeds 3 bestanden in de map die alle 3 omgezet moeten worden.
In de praktijk zal dit dagelijks gaan gebeuren.

Jan
 
Tevens, nu het bestand al bestaat hij is immers omgezet naar XLS, krijg ik een foutmelding als het het nu nog een keer doe.
De bestandsnamen moeten altijd gelijk blijven anders kan CR ze niet vinden, de code zou dus een overschrijf functie erbij moeten hebben.

Jan
 
Als je zegt een foutmelding te krijgen, vertel er dan ook bij welke dat is.
Heb je wel deze regel er in staan?
Code:
Application.DisplayAlerts = False
 
Laatst bewerkt:
De regel die je beschrijft staat bovenaan.
De foutmelding oeps, kwam omdat het bestand nog geopend was en hij dus niet opgeslagen kon worden.

Jan
 
De regel die ik liet zien voorkomt een foutmelding als het bestand al bestaat.
Vandaar de vraag.
 
Laatst bewerkt:
Duidelijk, en dat klopt ook.
Wat nog rest is de andere 2 bestanden overzetten naar XLS.
Ik zou 3 verschillende code's kunnen maken maar een complete code die alle bestanden in een map omzet zou makkelijk zijn.

Jan
 
Dat kan zo:
Code:
Sub M_snb()
    Application.DisplayAlerts = False
    PAD = "J:\download\"
    CSV = Dir(PAD & "ACOB_overige*.csv")
    While CSV <> ""
       With Workbooks.Open(PAD & CSV, Local:=True)
           .SaveAs Replace(.FullName, ".csv", ""), 51
           .Close
        End With
        CSV = Dir()
    Wend
End Sub
 
Recent kreeg ik deze code van jou Edmoor.
Onderstaande zet CSV bestanden om naar XLS en bewaard het in dezelfde map, en dat werkt prima.
Maar er zijn meer wensen.
Ik heb nl nog een bestand met een ander naam in dezelfde map die omgezet moet worden nl ACOB_zeep_02_2022
Of zou het niet handig zijn om ongeacht de naam, elk CSV bestand in de map om te zetten naar een XLS bestand, als dit kan.
Tevens de wens om de XLS bestanden niet in dezelfde map te zetten maar een andere bv. PAD = "C:\Users\jan\Desktop\ACOB weegdata\MetaCom weegdata\XLS bestanden"

Tevens vroeg ik me af of het ook andersom kan met onderstaande code dus van XLS naar CSV.
Ik heb het geprobeerd door CSV te veranderen naar XLS maar helaas, niet geschoten is altijd mis.

Jan

Code:
Sub CSV_naar_XLS()
Application.DisplayAlerts = False
PAD = "C:\Users\jan\Desktop\ACOB weegdata\MetaCom weegdata\CSV bestanden"
CSV = Dir(PAD & "ACOB_overige*.csv")
While CSV <> ""
With Workbooks.Open(PAD & CSV, Local:=True)
.SaveAs Replace(.FullName, ".csv", ""), 51
.Close
End With
CSV = Dir()
Wend
End Sub
 
Laatst bewerkt door een moderator:
Voor alle csv bestanden wijzig je dit;
Code:
Dir(PAD & "ACOB_overige*.csv")
In dit:
Code:
Dir(PAD & "*.csv")
Voor je 2e vraag, wil je alle werkbladen uit een document opslaan als CSV bestand of een specifiek werkblad?
 
Edmoor,
Bedankt het eerst pas ik aan.
Vraag 2 elk bestand bevat in dit geval maar 1werkblad.
Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan