[macro's] automatisch nieuwe docs maken o.b.v. rij-data

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • YoungElon
  • Registratie: November 2017
  • Laatst online: 28-09 11:33
Hallo Tweakers,

ik hoop dat jullie de gouden tip hebben inzake het volgende; chatgpt weet wel iets, maar biedt geen werkend antwoord helaas.

- ik heb een dataset met 60 rijen en 5 kolommen; de data begint in cel A2. De cellen A2-E2 bevatten de data van 1 account.

- nu wil ik, liefst automatisch, 60 (nieuwe) documenten maken waarin de data van 1 account opnieuw gepresenteerd wordt, in een iets ander format. Even als voorbeeld:
  • a2 moet naar c2
  • b2 moet naar c3
  • c2 moet naar c4
  • d3 moet naar c6
  • e4 moet naar c7
- daarna moeten de 60 documenten opgeslagen worden met in de bestandsnaam de data uit kolom A.

Ik ben echt een newb met excel macro's/automatiseringen en na een paar uur kutten met de code van ChatGPT nog geen steek verder. Als iemand hier even mee wil kijken, zou ik dat natuurlijk ontzettend waarderen! _/-\o_

bij voorbaat dank!

bijlage: de niet-werkende output van chatgpt

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub CreëerNieuweDocumenten()
    Dim origineelWerkblad As Worksheet
    Dim nieuweWerkmap As Workbook
    Dim nieuweWerkblad As Worksheet
    Dim rij As Long
    Dim bestandsnaam As String
    
    ' Koppel het oorspronkelijke werkblad aan de variabele
    Set origineelWerkblad = ThisWorkbook.Sheets(1)
    
    ' Loop door elke rij in het oorspronkelijke werkblad
    For rij = 2 To 62
        ' Maak een nieuw werkboek aan
        Set nieuweWerkmap = Workbooks.Add
        ' Koppel het nieuw gecreëerde werkblad aan de variabele
        Set nieuweWerkblad = nieuweWerkmap.Sheets(1)
        
        ' Kopieer de gegevens naar het nieuwe werkblad volgens je specificaties
        nieuweWerkblad.Cells(2, 3).Value = origineelWerkblad.Cells(rij, 1).Value
        nieuweWerkblad.Cells(3, 3).Value = origineelWerkblad.Cells(rij, 2).Value
        nieuweWerkblad.Cells(4, 3).Value = origineelWerkblad.Cells(rij, 3).Value
        nieuweWerkblad.Cells(6, 3).Value = origineelWerkblad.Cells(rij, 4).Value
        nieuweWerkblad.Cells(7, 3).Value = origineelWerkblad.Cells(rij, 5).Value
        
        ' Creëer de bestandsnaam op basis van de gegevens in kolom A
        bestandsnaam = "Pad\Naar\Opslag\Locatie\" & origineelWerkblad.Cells(rij, 1).Value & ".xlsx"
        
        ' Sla het nieuwe werkboek op met de gecreëerde bestandsnaam
        nieuweWerkmap.SaveAs bestandsnaam
        
        ' Sluit het nieuwe werkboek zonder op te slaan
        nieuweWerkmap.Close False
    Next rij
End Sub

...

Beste antwoord (via YoungElon op 30-01-2024 11:21)


  • dixet
  • Registratie: Februari 2010
  • Nu online
Moet de output echt in Excel?

Als je het mooier wilt presenteren met een document per klant kan je ook Mail Merge in Word gebruiken. Dan hoef je niet te k*tten met macro's en heb je nog meer opmaakmogelijkheden ook

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Nu online
Moet de output echt in Excel?

Als je het mooier wilt presenteren met een document per klant kan je ook Mail Merge in Word gebruiken. Dan hoef je niet te k*tten met macro's en heb je nog meer opmaakmogelijkheden ook

Acties:
  • 0 Henk 'm!

  • YoungElon
  • Registratie: November 2017
  • Laatst online: 28-09 11:33
Dit is een goeie tip, ik ga er even induiken, kende het nog niet, dankjewel @dixet

Acties:
  • +1 Henk 'm!

  • YoungElon
  • Registratie: November 2017
  • Laatst online: 28-09 11:33
dixet schreef op maandag 29 januari 2024 @ 12:08:
Moet de output echt in Excel?

Als je het mooier wilt presenteren met een document per klant kan je ook Mail Merge in Word gebruiken. Dan hoef je niet te k*tten met macro's en heb je nog meer opmaakmogelijkheden ook
Deze oplossing biedt precies wat ik nodig heb. Veel dank!