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

Kolom exporteren

Status
Niet open voor verdere reacties.

Eejjf

Gebruiker
Lid geworden
8 mei 2018
Berichten
27
Hallo,

Is het ook mogelijk om maar één of meerdere kolommen van een sheet te exporteren naar csv of xml i.p.v. het gehele blad?
Ik wil graag de waardes in kolom 2, 13 en 14 exporteren (het is even een snel voorbeeld sheet).
Bekijk bijlage test.xlsx

Met vriendelijke groet,
Eva
 
Laatst bewerkt:
Nee, denk het niet. Je zult de kolommen eerst naar een eigen werkblad moeten overzetten.
 
Het kan ook met deze simpele macro:
Code:
Sub ExportCSV()
    CSV = Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 5) & ".csv"
    FNR = FreeFile()
    Open CSV For Output As #FNR
    For i = 11 To Range("A11").CurrentRegion.Rows.Count + 10
        Print #FNR, Join(Array(Cells(i, 2), Cells(i, 13), Cells(i, 14)), ";")
    Next
    Close FNR
End Sub

Deze maakt een CSV bestand in de map waar je document staat, met als naam de naam van je document maar met extensie .csv
 
Laatst bewerkt:
Het kan ook met deze simpele macro:
Code:
Sub ExportCSV()
    CSV = Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 5) & ".csv"
    FNR = FreeFile()
    Open CSV For Output As #FNR
    For i = 11 To Range("A11").CurrentRegion.Rows.Count + 10
        Print #FNR, Join(Array(Cells(i, 2), Cells(i, 13), Cells(i, 14)), ";")
    Next
    Close FNR
End Sub

Deze maakt een CSV bestand in de map waar je document staat, met als naam de naam van je document maar met extensie .csv

Dankjewel edmoor, ga het morgen eens proberen! Wil hem alleen liever onder een andere naam wegschrijven.. Kan ik dan gewoon Fullname aanpassen naar de naam die ik het bestand wil geven? Of denk ik nu te makkelijk?
 
Achter CSV = moet een pad en bestandsnaam staan. Daar mag je van maken wat je maar wilt.
Hou er wel rekening mee dat die macro gemaakt is voor het test bestand dat je plaatste.
Voor je eigenlijke document zal het waarschijnlijk wel moeten worden aangepast.
 
Laatst bewerkt:
Hou er wel rekening mee dat die macro gemaakt is voor het test bestand dat je plaatste.
Voor je eigenlijke document zal het waarschijnlijk wel moeten worden aangepast.

Ja uiteraard, thanks!
 
Het quoten is niet nodig. CSV bestanden houd ik niet zo van als er een file-associatie met Excel ingesteld is.

Iets andere code dan edmoor (eerst alles in het geheugen zetten en dan pas wegschrijven)

Code:
Sub VenA()
  c00 = "E:\Temp\testje.dat" 'even aanpassen
  ar = Sheets("Blad4").Cells(10, 1).CurrentRegion
  For j = 1 To UBound(ar)
    c01 = c01 & Join(Array(ar(j, 2), ar(j, 13), ar(j, 14)), ";") & vbCrLf
  Next j
  CreateObject("scripting.filesystemobject").CreateTextFile(c00).write c01
End Sub
 
Dat zal in ieder geval bij grote hoeveelheden een stuk sneller zijn :)
 
Wauwie Vena, die code loopt super snel.
Bedankt weer allemaal, ik ben geholpen. :thumb:
 
@VenA,

Is het nog mogelijk om de kolommen/rijen te wijzigen? Ik wil namelijk dat het gekopieerd wordt zonder kolom naam. Alleen wanneer ik dat zelf probeer krijg ik telkens de melding toegang geweigerd.
 
Wat heb je geprobeerd dan? Zet in de VB editor het venster 'Locals' aan en wandel met <F8> eens door de code. Je kan dan zien welke variabele welke waarde krijg en hiermee zelf de vraag oplossen.
 
Nouja ik had gedacht binnen de join gewoon het bereik aan te passen, maar dat deed het niet. En nu ik het terug gezet heb naar wat het eerst was, krijg ik telkens fout 70 toegang geweigerd. Ook als ik de macro er helemaal opnieuw inzet krijg ik weer fout 70. Erg vreemd, hij runt dus ook niet meer. En bij foutopsporing verwijst ie naar > CreateObject("scripting.filesystemobject").CreateTextFile(c00).write c01
Dus ik had gegoogled en daar zeggen ze dat die fout wordt veroorzaakt door het maken van schadelijke GUID.. Maarja hij deed het gisteren echt vlekkeloos..
 
Laatst bewerkt:
En heb je al gedaan wat VenA in #13 aangaf?
Wat heb je achter c00 = staan?
 
Code:
Sub VenA()
c00 = "C:\Users\Robin van der Leur\Documents\Eva\test" 'even aanpassen
  ar = Sheets("Blad4").Cells(10, 1).CurrentRegion
  For j = 1 To UBound(ar)
    c01 = c01 & Join(Array(ar(j, 2), ar(j, 13), ar(j, 14)), ";") & vbCrLf
  Next j
  CreateObject("scripting.filesystemobject").CreateTextFile(c00).write c01
End Sub

Alleen naar mijn eigen locatie gezet
 
Maar heb je dat nu al met F8 doorlopen?
En mag je schrijven in deze locatie?
C:\Users\Robin van der Leur\Documents\Eva
 
Ja met f8 doorlopen, dus het toevoegen van een nieuwe kolom gaat lukken, maar ik kan niet runnen ivm fout 70. Nouja, alleen-lezen staat geselecteerd en als ik dan op geavanceerd klik staat er > de inhoud en de eigenschappen van bestanden in deze map mogen worden geïndexeerd. Maar als ik die deselecteer en dan nog eens probeer te runnen, doet ie het alsnog niet en vervolgens als ik dan weer bij eigenschappen kijk is ie weer vanzelf geselecteerd (als blokje, geen vinkje).
Overigens dezelfde code ook toegepast op een andere sheet, en daar werkt ie wel gewoon..

Code:
Sub export2()

  c00 = "C:\Users\Robin van der Leur\Documents\Eva\Voorraad Export\Voorraad Export_" & Range("C4").Value & "_" & Format(Now(), "DD-MMM-YYYY hh mm") & ".csv" 
  ar = Sheets("ActueleVoorraad").Cells(10, 1).CurrentRegion
  For j = 1 To UBound(ar)
    c01 = c01 & Join(Array(ar(j, 2), ar(j, 13), ar(j, 14)), ";") & vbCrLf
  Next j
  CreateObject("scripting.filesystemobject").CreateTextFile(c00).Write c01
  
  
End Sub

dus alleen m'n test excel sheet werkt niet meer



EDIT: Sorry, heb bovenstaande code erin geplakt en dan de locatie gewijzigd en nu doet ie het weer, waarom weet ik niet?
Zie vgm geen verschillen in de code maargoed!
 
Laatst bewerkt:
kan het zijn dat er een extensie ontbreekt in:
c00 = "C:\Users\Robin van der Leur\Documents\Eva\test"
 
Maar nu vertel je nog niet op welke regel je die fout 70 krijgt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan