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

Kopieren m.b.v. VBA naar nieuw werkblad

Status
Niet open voor verdere reacties.

Gerald Baalhuis

Gebruiker
Lid geworden
14 jan 2006
Berichten
369
Beste forum leden,

Ik heb een moederbestand met zo'n 700 rijen. In elke rij staan cellen met diverse gegevens.

Deze gegevens moeten gekopieerd worden naar een andere werkblad in een andere werkmap.

Ik heb dit geprobeerd met de marco recorder, maar die loopt bij eén van de eerste regels al 'vast'.

Vraag is nu:
Hoe kan ik het gemakkelijkst vanuit een 'moederbestand' diverse cellen naar een ander werkblad in een andere werkmap kopiëren, in deze andere werkmap een nieuw werkblad aanmaken met de zelfde vaste gegevens als het voorgaande werkblad (in dezelfde werkmap) en vervolgens het nieuwe werkblad weer vullen met de gegevens uit het moederbestand?

Ik heb beide bestanden bijgevoegd.
In de werkmap (werkbladen) Nieuwe doorzendlijsten zijn alle in te vullen cellen groen gekleurd. De overige (al dan niet gekleurde) cellen horen tot het 'sjabloon'.
Uiteindelijk zouden er dus 700 werkbladen in deze werkmap onstaan met gegevens uit het moederbestand.

Alvast weer mijn dank,

Gerald
 

Bijlagen

Laatst bewerkt:
Ik heb de macro opnieuw opgenomen, nu kolpieert hij telkens dezelfde cellen.
Kan ik het zo maken dat de macro (VBA) telkens naar de volgende regel in het eerste bestand gaat en van die regel dan alle toepasselijke cellen kopieert naar een nieuwe werkblad in de werkmap "Nieuwe doorzendlijsten"? Het nieuwe werkblad zou dezelfde indeling/layout e.d. moeten hebben als het erste werkblad.

Gerald
 

Bijlagen

Laatst bewerkt:
Ik vraag me af of 1 file met 700 werkbladen nog wel werkzaam is.
 
Popipipo,

Ben ik helemaal met je eens! Ik ben wel bezig om e.e.a. om te zetten naar Access, maar daar ben ik geen ster in.
We gebruiken de doorzendlijsten als hoofddocument bij onze opdrachten. We printen de lijsten éénmaal per week uit (week A t/m D) en passen alleen in het moederbestand gegevens aan.
Wat mij betreft mogen de 700 werkbladen ook gesplitst worden in 4 x 175 werkbladen (zodat we per week kunnen uitprinten).
Of misschien zelfs per dag: week A dag 1 t/m 6, week B dag 1 t/m 6 enz. Dan zou je 30 werkbladen per werkmap hebben.

Op dit moment is het probleem met Excel echter dat de wijzigingen niet automatisch doorgevoerd worden in de 'doorzendlijsten'.

Als iemand daar een idee over heeft....graag!!!!


Voor nu wil ik dus graag met een marco het volgende doen:
In de werkmap "nieuwe doorzendlijsten" een kopie van het werkblad aanmaken met dezelfde layout, kolombreedtes en teksten enz. Deze kopie moet vervolgens gevuld worden.
In bestand "Moederbestand" (ik heb een verkleinde versie gepost "Helpmij 1802") per regel met gegevens diverse cellen kopieren naar de nieuwe werkmap het bestand "nieuwe doorzendlijsten".
Als alle benodigde cellen gekopieerd zijn (waarden plakken), dan het gevulde werkblad in de werkmap "nieuwe doorzendlijsten" een unieke naam geven.
Vervolgens naar de volgende regel in het moederbestand.
Dan weer een kopie van het 'sjabloon' werkblad in werkmap "Nieuwedoorzendlijsten" maken en de macro opnieuw laten lopen.

Ik heb dat geprobeerd met de macro recorder, maar dan gaat deze telkens naar dezelfde regel in het moederbestand. terwijl de macro naar de volgende regel zou moeten gaan tot het einde van rijen in die werkmap.


Gerald
 
Laatst bewerkt:
naamgeving werkblad na kopiëren vanuit andere werkmap

In de twee bijgaande bestanden ('moederbestand' en 'nieuwe doorzendlijsten') zitten een aantal macro's.
In het moederbestand wordt met autofilter eerst een selectie gemaakt. (Alleen regel waar in kolom A een A is ingevuld).
Ik heb nu de opgenomen macro zover dat deze telkens de betreffende celinhoud uit het 'moederbestand' als waarde in de juiste cel kopieërt in hetbestand 'nieuwe doorzendlijsten'.
Omdat het een opgenomen macro is heb ik het idee dat deze met wat VBA vast wel korter kan...
Wellicht heeft iemand een idee?

Aan het einde van deze opgenomen macro zou ik graag willen dat in de werkmap 'nieuwe doorzendlijst' het zojuist gevulde werkblad de naam krijgt uit een drietal cellen uit dat werkblad.
Deze code staat 'gedeactiveerd' in "This Workbook" in de werkmap "Nieuwe doorzendlijsten". Ik heb deze uitgevinkt omdat dit niet goed loopt.
Vraag 1: Weet één van jullie hoe ik deze code werkend krijg binnen de opgenomen macro?

Aan het eind van de marco zou de celpointer naar de werkmap 'moederbestand' moeten gaan, daar naar kolom A gaan en dan één regel naar beneden moeten lopen om vervolgens de hele macro weer te herhalen.

Het moederbestand in 'uitgekleed', in de normale versie zijn er 750 rijen met gegevens.

Ik wacht in spanning af,

Met vriendelijke groet,

Gerald
 

Bijlagen

Ik ben even aan het kijken. maar als de data alleen geprint wordt, kun je dan niet beter kijken naar een mail-merge ? Ik neem aan dat elke lijn een enkel document is?
 
Wampier,

Inmiddels is het mij gelukt om met hulp van de marcorecorder en wat speurwerk bij helpmij en ozgrid om de 'macro'werkend te krijgen.
Waarschijnlijk kan de macro veel sneller lopen als je het gedelte van de marcorecorder 'ombouwd' naar vba, maar daar heb ik bijna geen kennis van.

De marco genereert nu 1 lijst per seconde, dat is al 180x sneller dan de 3 minuten die en persoon bewzig is met knippen en plakken :)

Het mooiste zou zijn om (als we Excel blijven gebruiken) iets te 'bouwen' dat ervoor zorgt dat de wijzgingen in het moederbestand als het ware gekopieerd worden naar het betreffende doorzendlijsten bestand zonder alle andere regels te kopieren. Zou je daar eens je deskundige blik op kunnen werpen?

Ik ben bezig om e.e.a. naar Access over te zetten, maar daar heb ik eigenlijk erg weinig ervaring mee, hoewel Access volgens mij veel beter geschikt is voor dit soort lijsten.

Ook ben ik erg nog niet uit met het 'electronisch' afvinken in mijn andere tpoic, ik wil dat graag via een userform doen.

Maar voor nu, alvast bedankt voor het meekijken en denken. Ik zal vanavond ook even de versie van de bestanden zoals ik ze nu gebruik even hier plaatsen, dan kan je eens kijken of je het wat vindt!

Groetjes,

Gerald
 

Bijlagen

Het gaat er mij om: wat doe je met de gemaakte lijsten nadat je er klaar mij bent?

Wat je kunt doen met de mailmerge is eenmalig een formulier/template maken. Vervolgens zet je in dat formulier op de juiste plaats waar wat uit welke kolom moet komen (kan een access kolom of excel kolom zijn). Nadat je dit hebt gedaan kun je willekeurig data opgeven (hele tabel / gefilterd, enkele lijnen, etc) en vervolgens worden die geselecteerde items exact geprint volgens het template.

1 lijn wijzigen? selecteer die lijn, printen en alleen die lijn wordt geprint. Er is dus een standaard oplossing in office als je een enkele rij wil printen in een vast formaat.
 
Wampier,

Als de lijsten klaar zijn worden deze afgedrukt en als begeleidend document (doorzendlijst) meegestuurd met een verpakkingsopdracht. Op dit begeleidend formulier tekenen alle mensen die de opdracht obder ogen krijgen hun 'zaken' af. De door Excel ingevulde gegevens zijn bedoeld als controle en ter informatie.
Eventuele wijzigingen die op de doorzzendlijst gemaakt worden worden de week erna doorgevoerd in het moederbestand (bijvoorbeeld het aantal patienten neemt toe van 10 naar 20).
Deze gewijzigde regel zou dan gebruikt moeten worden om de oude doorzendlijst te vervangen.
Ik zat zelf te denken om een unieke code op te nemen in de doorzendlijst bijvoorbeeld bestaande uit het weeknummer, het dagnummer (1 t/m 6), de eerste 5 letters van de apotheek (of een code voor de apotheek) en een code voor de 1e afdeling.
Wellicht kan je dan met VBA zoeken op die code in de werkmap met alle doorzendlijsten van die week en het betreffende werkblad vervangen door de gewijzigde gegevens.

Ik hoop dat mijn uitleg een beetje duidelijk is.

ALvast weer bedankt!

Groet,

Gerald
 
Het is wel duidelijk. Maar dan blijft mijn vraag: "waarom wil je iets wat al bestaat in office opnieuw uitvinden?"

Ik ben altijd wel bereid om wat moeite te doen om zaken op te lossen, maar ik zie hier nog steeds het voordeel niet ten opzichte van de oplossing die office standaard aanbied. Vooral gezien het feit dat je over wil stappen op een database waarbij de macro oplossing een stuk ingewikkelder wordt.
 
Hoi Wampier,

Ik ga je advies opvolgen en kijken of ik via mailmerge e.e.a. kan maken. Maar ik dacht dat mailmerge in Excel (dus zonder Word) niet mogelijk is.

Gerald
 
Klopt het is een standaard feature van word. Maar wat is het voordeel van Excel dan? Ik zie dat namelijk niet. Je kunt overigens met een klein beetje moeite je huidige formulier in word inpassen.

Je maakt (importeerd) je template in word. Even marges aanpassen e.d. en de velden goed zetten.

Vervolgens ga je naar mailmerge, bestaand bestand, je excel sheet. Data aanpassen -> filteren op week "A" (+ eventueel andere zaken) -> print list. en alle documenten rollen zo uit je printer.

Overigens ben ik natuurlijk bereid te luisteren naar argumenten als het echt niet mogelijk is. Je kunt op deze manier ook een access query meegeven en word haalt dan automatisch de regels op, eventueel eerst even bewerken en ook printen. Het werkt dus exact hetzelfde in excel en access.
 
Dat is een optie, maar niet geoptimaliseerd voor het bulkprinten van veel items. Overigens was zoiets mijn voorstel als het wel per se in excel moet ;).

Dit werkt echter weer niet / moeilijker als je overstapt op access.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan