Aanmaken CSV bestand gebasseerd op identieke waarden kolom A

Status
Niet open voor verdere reacties.

Lerac

Gebruiker
Lid geworden
13 apr 2007
Berichten
26
Ik heb VBA-code tijdje geleden gemaakt waarmee ik CSV-bestanden tezamen zal aanmaken indien in kolom D "Yes" staat. Indien er "No" staat zal het een aparte CSV aanmaken. Dit is echter niet meer wat ik nodig heb.

In plaats van kolom D te gebruiken met de inhoud Yes/No zou ik willen dat het naar de bestandsnaam kijkt in kolom A (wat betekend dat ik kolom D verwijder). Als de bestandsnaam identiek is (in kolom A) wil ik dat het voor al die regels met identieke naam een elke keer een CSV-bestand apart aanmaakt. Excuus als ik niet duidelijk genoeg ben maar hier is een voorbeeld van wat ik bedoel:

Sheet heeft in kolom A de volgende gegevens
A3 = Test001
A4 = Test001
A5 = Test002
A6 = Test002
A7 = Test003
A8 = Test002

1. Het zou moeten resulteren in verschillende CSV-bestanden waarbij alles onder elkaar met standaard 1x de "header" uit veld C2 en alle regels van kolom C zitten waarbij in kolom A identieke waardes (vanaf regel 3) zijn opgevoerd. Kortom in relatie tot voorbeeld bovenaan zou dit in het volgende dienen te resulteren

CSV 1 bevat uiteindelijk (bestandsnaam A3 - opgeslagen pad B3)
C2 (dit is header dus)
C3
C4

CSV 2 bevat (bestandsnaam A5 - opgeslagen pad B5)
C2 (dit is header dus)
C5
C6
C8

CSV 3 bevat (bestandsnaam A7 - opgeslagen pad B7)
C2 (dit is header dus)
C7

2. Zoals in voorbeeld aangegeven dient dus hierbij de CSV-bestand het bestandsnaam te hebben van betreffende reeks met identieke naam. Hierbij kan de eerste regel waarin de identieke waarde ontdekt wordt gebruikt worden.
3. Ook zoals in voorbeeld aangegeven dient het CSV-bestand opgeslagen zijn in het pad dat aangegeven is in kolom B van betreffende reeks met identieke naam. Hierbij kan de eerste regel waarin de identieke waarde ontdekt wordt gebruikt worden.

Simpelweg dient het dus hetzelfde te werken als onderstaande code maar dan dient het niet meer naar Yes/No te kijken maar naar de identieke waarden in kolom A vanaf regel 3. Wellicht dat een voorbeeldbestand meer duidelijkheid bied ook.

In bijlage nieuw voorbeeldbestand geplaatst

Code:
Sub GenerateCSV()    
    Max = Application.WorksheetFunction.CountA(Range("D:D")) + 1
    i = 3
    
    While i <= Max
        'Find the first instance of a "Yes"
        If Cells(i, 3).Value = "Yes" Then
            'Set the title value
            t = Range("D2")
        
            'Loop through the remainder of the rows to find all "Yes" rows and build a single file
            For j = i To Max
                If Cells(j, 3).Value = "Yes" Then
                    t = t & vbNewLine & Cells(j, 4).Value
                End If
            Next j
            
            'Create the file for "Yes" values
            p = Cells(i, 2)
            f = Cells(i, 2).Value & "\" & Cells(i, 1).Value & " TypeA" & ".csv"
            X = Dir(p, vbDirectory)
            If X = "" Then MkDir p
            Set fs = CreateObject("Scripting.FileSystemObject")
            Set a = fs.CreateTextFile(f, True)
            a.Write (t)
            a.Close
            
            'Exit the loop because the "Yes" file has been created
            i = Max
        End If
    
        i = i + 1
    Wend
    
    'Create the "No" files
    For i = 3 To Max
        If Cells(i, 3).Value = "No" Then
            t = Range("D2") & vbNewLine & Cells(i, 4).Value
            p = Cells(i, 2)
            f = Cells(i, 2).Value & "\" & Cells(i, 1).Value & " TypeA" & ".csv"
            X = Dir(p, vbDirectory)
            If X = "" Then MkDir p
            Set fs = CreateObject("Scripting.FileSystemObject")
            Set a = fs.CreateTextFile(f, True)
            a.Write (t)
            a.Close
        End If
    Next i End Sub
 

Bijlagen

  • Voorbeeld.xlsx
    34,1 KB · Weergaven: 16
Laatst bewerkt:
Welk vertaalprogramma heb je gebruikt ?
 
Snap niet precies wat je bedoeld met welk vertaalprogramma ik gebruikt heb, maar excuus als het eventueel onduidelijk is. Heb inmiddels de vraag weer aangepast en hoop dat het zo duidelijker is en een nieuw Excelbestand in Nederlands geplaatst.

Voor helderheid:
1. De Macro dient te draaien in Excel
2. Dient een export te maken als een CSV bestand

Mocht er nog iets zijn hoor ik het graag.

Alvast heel erg bedankt voor eventuele hulp.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan