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

VBA: CSV bestand opschonen

Status
Niet open voor verdere reacties.

tomswaelen

Gebruiker
Lid geworden
8 dec 2004
Berichten
349
Ik heb onderstaande macro die het worksheet BETMANU in een nieuw CSV bestand opslaat op de desktop van de user.

Alleen bevat de originele worksheet formules als deze:

=IF(Ingave!A6="";"";TEXT(Ingave!C6;"0,00"))

In Excel lijken deze cellen dus leeg, in het CSV bestand exporteert hij deze rijen als: ;;;;;;;;;;;;;;

Dit lijkt me ook logisch, aangezien die cellen in feite alleen maar leeg lijken.

Echter, in mijn CSV bestand zouden deze niet mogen in staan; hoe krijg ik deze weg?

Ik heb al eens naar de Replace functie gekeken, maar daar kom ik er precies niet mee.

Code:
Sub BETMANU()

    Filename = Worksheets("Ingave").Range("B2") & Worksheets("Ingave").Range("B3")
    User = Environ("Username")
    Desktop = "C:\Users\" & User & "\Desktop\"

    Dim MyFileName As String
    Dim TempWB As Workbook
     
    Worksheets("BETMANU").UsedRange.Copy
 
    Set TempWB = Application.Workbooks.Add(1)
    With TempWB.Sheets(1).Range("A1")
      .PasteSpecial xlPasteValues
      .PasteSpecial xlPasteFormats
    End With

    MyFileName = Desktop & Filename & ".csv"
     
    Application.DisplayAlerts = False
    TempWB.Saveas Filename:=MyFileName, FileFormat:=xlCSV, CreateBackup:=False, Local:=True
    TempWB.Close SaveChanges:=False
    Application.DisplayAlerts = True

End Sub
 
het lijkt me best te filteren in "Worksheets("BETMANU").UsedRange" op "niet-lege cellen.
Is er daar voor de nuttige rijen 1 kolom die altijd gevuld is ?
Dan wordt het Worksheets("BETMANU").UsedRange.specialcells(xlvisible).Copy
 
Dat blijkt niet te werken, de cellen waar een formule een ""-waarde geeft, worden blijkbaar niet uitgesloten door XLvisible.

Maar filteren bleek wel de oplossing :-) De eerste kolom van elke rij bevat immers altijd dezelfde waarde, dus kan ik eerst daarop filteren alvorens te kopiëren:

Code:
    Worksheets("BETMANU").Range("A1").AutoFilter _
        Field:=1, _
        Criteria1:="BETMANU4", _
        VisibleDropDown:=False
    Worksheets("BETMANU").UsedRange.SpecialCells(xlVisible).Copy
 
Suggestie: steek je licht eens grondig op over autofilter en advancedfilter.
 
In plaats van "" zou je natuurlijk iets van "|" kunnen gebruiken, dan doe je na het kopieren inderdaad een zoek en vervang operatie met | als zoektekst en leeg als vervangtekst
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan