Macro(vervolg)

Status
Niet open voor verdere reacties.

jack009

Gebruiker
Lid geworden
28 aug 2006
Berichten
223
Macro

kan iemand mij helpen? ik wil een macro maken die een gewoon xls.bestand opslaat als csv.bestand.
ik heb het al geprobeerd met macro's opnemen maar dat lukt niet omdat het xls bestand dan gelijk als csv wordt opgeslagen , ik moet hem iedere keer gewoon als xls kunnen openen en als csv opslaan met een macro?

bij voorbaat dank

Winston
 
Sub MaakCSV()
Dim i As Long
Dim j As Long
Dim vFile As Variant
Dim vData As Variant


vFile = Application.GetSaveAsFilename(ActiveSheet.Name & ".csv", "csv bestanden,*.csv,Alle bestanden (*.*),*.*", , "Actieve werkblad opslaan als CSV")
If vFile = False Then Exit Sub


vData = ActiveSheet.UsedRange
Open vFile For Output As #1
For i = LBound(vData, 1) To UBound(vData, 1)
For j = LBound(vData, 2) To UBound(vData, 2)
Write #1, vData(i, j),
Next
Write #1,
Next
Close #1
End Sub

Pierre
 
Laatst bewerkt:
dank

Pierre,

harstikke bedankt voor je hulp.

het werkt perfect.

groet Winston
 
Graag gedaan maar wil je de vraag op opgelost zetten leest beter in het forum.

Pierre
 
Hallo

ik heb pas geleden een vraag beantwoord gekregen.

ik was iets te voorbarig.:o
mijn vraag was
kan iemand mij helpen? ik wil een macro maken die een gewoon xls.bestand opslaat als csv.bestand.
ik heb het al geprobeerd met macro's opnemen maar dat lukt niet omdat het xls bestand dan gelijk als csv wordt opgeslagen , ik moet hem iedere keer gewoon als xls kunnen openen en als csv opslaan met een macro?
daar heb ik deze oplossing voor gekregen


Sub csv()

Dim i As Long
Dim j As Long
Dim vFile As Variant
Dim vData As Variant


vFile = Application.GetSaveAsFilename(ActiveSheet.Name & ".csv", "csv bestanden,*.csv,Alle bestanden (*.*),*.*", , "Actieve werkblad opslaan als CSV")
If vFile = False Then Exit Sub


vData = ActiveSheet.UsedRange
Open vFile For Output As #1
For i = LBound(vData, 1) To UBound(vData, 1)
For j = LBound(vData, 2) To UBound(vData, 2)
Write #1, vData(i, j),
Next
Write #1,
Next
Close #1

End Sub


hij slaat inderdaad de xls bestand op als csv, maar hij slaat de gevens die apart in kolommen staan nu op in kolom A met lijst scheidingtekens, ik wil ze graag zo opslaan zoals ze in de kolommen staan
ik hoop dat jullie me hiermee kunnen helpen
bvd

Jack
 
Het csv formaat kent geen kolommen, maar een scheidings teken.
Waar je tegen aanloopt is dat excel bij het openen de scheiding niet automatisch toe past.

Verander Write #1, vData(i, j), in Write #1, vData(i, j);

Dus met een ; er achter ipv een ,
je krijgt nu wel een extra ja/nee vraag bij het opslaan, maar bij het openen van deze csv zet excel de data automatisch weer terug in de juiste kolommen.
Is dat geen optie en moet je met , werken ivm een andere applicatie.
Selecteer de A kolom na het openen van het bestand dan,
Data, Tekst naar kolommen, Volgende, vink Komma aan, Voltooien.
 
Laatst bewerkt:
geachte Withaar,

de ; ipv , maakt geen verschil
kolom A selecteren zoals door jou als laatste uitgelegd werkt prima!

ik heb alleen 1 vraag is het mogelijk dit aan de macro toe te voegen zodat dit samen met het opslaan als csv gebeurt, ik wil graag met 1 macro deze handelingen doen

in ieder geval bedankt voor de hulp tot zover

groet Jack
 
Heeft niet met het opslaan te maken.
In een opgeslagen CSV bestand heb je een , of een ; tussen je data staan, dat is het scheidings teken.
De macro naamt alleen het bestand aan.

Je 'probleem' ontstaat bij het terug inlezen van dit bestand in excel.
Excel zet je data niet automatisch terug in tabellen, maar laat alles zien in de A-tabel, met een , of een ; er tussen. Dit is eigenlijk normaal. Als je zou willen dat het direct in tabellen zichtbaar is moet je gewoon het XLS formaat van excel zelf gebruiken.
CSV is een hele oude manier om data in op te slaan en bestond al lang voor excel.

Welke versie van excel gebruik je?
Zelf heb ik 2003, CSV met een , leest hij in de A kolom in, met met een ; zet excel bij mij de data netjes terug in de diverse kolommen.

N.b. als je via Data, Externe gegevens importeren, Gegevens importeren je CSV bestand inlees krijg je wat keuze schermen, kies volgende, vink komma en/of punt aan en druk op voltooien.
 
ik werk ook met excel 2003 maar ik heb de , vervangen voor; dan zou zoals jij vermeldt de csv bij het openen weer alles in kolommen moeten plaatsen alleen dat gebeurt bij mij niet
het andere via data en tekst naar kolommen werkt wel prima. dat heb ik nu ook in een macro verwerkt dus heb ik nu twee buttons één voor opslaan als csv en één voor het weer in kolommen zetten , hierna kan ik hem dus in mijn andere applicatie laden.

wederom bedankt

groet Jack:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan