[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
  • Laatst online: 16:56
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
  • Laatst online: 16:56
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!