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

worksheets opslaan in eigen excel-bestand

Status
Niet open voor verdere reacties.

gbon

Gebruiker
Lid geworden
26 okt 2006
Berichten
35
Hoi groep,

Ik heb een bestand van 26 leerlingen, met voor elke leerling een worksheet, genaamd ll1 tot ll26. In iedere worksheet staat het rapport van die leerling.
We willen 26 excel-bestanden (eigenlijk n, zodat het volgend jaar ook werkt), voor iedere leerling 1. Dit moet 4 keer per jaar, dus moet in een macro. Ieder Excel-bestand krijgt de naam van de leerling. Deze staat in iedere worksheet op veld K2. Het bereik dat gekopieerd moet worden is A1:N36

Wat in het meegeleverde bestand gebeurt, is dat er geen focus komt op de worksheet van betreffende leerling. Elke keer wordt doodleuk sheet 1 gekopieerd. Dus de active workbook staat niet goed.

Wat doe ik verkeerd in de code?

Wie helpt alsjeblieft?:thumb:

Bekijk bijlage excel-macro.txt
 
Laatst bewerkt:
Hoi groep,

De macro doet nu zijn belangrijkste taak: per leerling een excel-bestand maken van zijn/haar rapport.
Het nieuwe excel-bestand heeft echter niet de opmaak van de originele sheet. Bepaalde kolommen staan op standaard-breedte, tekst valt weg
Als ik dit doe, dan heeft dat geen effect op de opmaak:
'kopieer rapport van deze leerling
Sh.[A1:N36].Copy
Sh.[A1:N36].CopyStyles

Wat doe ik fout?

Wie helpt alsjeblieft?

Groet, Gerrit.
 
Okee, en met deze laatste toevoeging worden ook de kolom-breedtes gekopieerd naar de nieuwe excel-bestanden:

Selection.PasteSpecial xlPasteColumnWidths, xlNone, False, False

En daarmee is bijna alles uitgevoerd. Nog één ding zag ik over het hoofd: de handtekening van de directeur. Waarschijnlijk een bitmap. Deze wordt nog niet gekopieerd. Wie weet hoe dat moet?

Een vriendelijke groet, Gerrit.

ps wel leuk dit forum. Je laat mensen gewoon zwemmen en dan blijven ze uiteindelijk toch wel drijven!
 
Zo kopieer je het hele blad in een nieuw bestand.

Code:
Sub sheetscopy()

    For Each sh In ThisWorkbook.Sheets
        With sh.copy
            ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("K2").Value & (".xlsx")
            ActiveWorkbook.Close
        End With
    Next
    
End Sub


Niels
 
Laatst bewerkt:
Hoi Niels,

Dank voor je bijdrage, gelijk geprobeerd, maar ik doe iets fout denk ik. Krijg fout 1004, "methode SaveAs van object _Workbook is mislukt". Misschien mag ik sheetscopy niet zelfstandig uitvoeren? Of mag K2 niet leeg zijn?

Gr. Gerrit.
 
Ja, hij werkt nu. Zie sheetscopy.txt waarin jouw code met kleine aanpassing voor controle op lege naam. De lege naam staat in een blad waarin het basisrapport wordt getoond.

Verbazend hoe je van 45 regels code naar 11 regels terug kan.

Bedankt Niels!

Ik kan dit lijntje nu op slot zetten.

Groet, Gerrit.
 

Bijlagen

  • sheetscopy.txt
    551 bytes · Weergaven: 45
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan