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

Ophogen cel bij printen van bepaald aantal kopieen

Status
Niet open voor verdere reacties.
Test deze dan eens.
Het oplopende nummer wordt in M1 geplaatst.
Code:
Sub Cobbe()
    Dim invoer As Integer, i As Integer, MyArray() As String
    invoer = InputBox("aantal afdrukken")
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        For i = 1 To invoer
            Sheets("Blad1").Copy Sheets(Sheets.Count)
            ActiveSheet.[A1] = i
        Next
        ArrayIndex = 0
        For i = 1 To Sheets.Count
            If Not Sheets(i).Name = "Blad1" Then
                ReDim Preserve MyArray(ArrayIndex)
                MyArray(ArrayIndex) = Sheets(i).Name
                ArrayIndex = ArrayIndex + 1
            End If
        Next i
        Sheets(MyArray).Select
        With ActiveWindow.SelectedSheets
            .PrintPreview 'PrintOut
            .Delete
        End With
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

Warme Bakkertje:
Ik heb deze oplossing ook geprobeerd maar hij werkt ook niet. Krijg een afdrukvoorbeeld en bij het printen hiervan hoogt hij het nummer niet op.
Toch bedankt ik denk dat ik de laatste oplossing van Cobbe ga gebruiken die werkt wel alleen iets sneller als mijn oorspronkelijke script.
 
Heb je het voorbeeldbestand geprobeerd bij mijn antwoord ?
De code daarin wijkt enigszins of van wat ik gepost heb.
Als je dit bestand probeert zal je rechtsboven een oplopend nummer zien bij elke afdruk.
 
Waarom maak je geen gebruik van het programma dat daarvoor het meest geschikt is : Word met mailmerge ?
 
Hij werkt (gedeeltelijk)

Heb je het voorbeeldbestand geprobeerd bij mijn antwoord ?
De code daarin wijkt enigszins of van wat ik gepost heb.
Als je dit bestand probeert zal je rechtsboven een oplopend nummer zien bij elke afdruk.

Hallo Warme bakkertje:
Ja, ik heb het voorbeeldbestand op mijn werk gedownload en geprobeerd. In principe doet hij wat je zegt alleen heb ik in mijn originele code het voordeel dat hij indien ik in M1 b.v. 300 ingeef, en kies voor b.v. 50 prints hij begint bij 301 en dan 50 stuks print. Dat is in jou voorbeeld niet het geval. We moeten n.l. altijd een uniek nummer hebben ook bij het opnieuw printen van nieuwe formulieren. Hij moet dan gewoon doorgaan bij het laatste getal dat geprint was.

Dit is in ieder geval hoopgevend. Hij print alle exemplaren nu wel achter elkaar zonder te stoppen.
Misschien weet je voor dat andere probleem ook nog een oplossing.

Heel hartelijk bedankt voor zover.
 
Je hebt maar 1 VBA regel nodig:

Code:
Sub test()
   Range("A1:M38").AutoFill Range("A1:M38").Resize(InputBox("aantal exemplaren") * 38)
End Sub
 
Je hebt maar 1 VBA regel nodig:

Code:
Sub test()
   Range("A1:M38").AutoFill Range("A1:M38").Resize(InputBox("aantal exemplaren") * 38)
End Sub

Hallo snb

Jou oplossing is niet wat ik bedoel, de code kopieert het gehele werkblad het aantal keren dat ik ingeef.
Hij hoogt wel juist op maar als ik 300 exemplaren moet printen wordt het wel een groot bestand, of zie ik dat verkeerd.
Maar fijn dat je wilt meedenken over dit voor mij vervelende probleem.
 
Svp niet onnodig citeren !

Toch nog maar eens iets beter code lezen.
Je kunt de code ook gewoon testen.

Het werkblad wordt niet gekopieerd, alleen het gebied A1:M38.
Dat leidt natuurlijk tot een veel kleiner bestand dan de andere oplossingen die steeds nieuwe werkbladen maken.
Jouw vraag ging toch over snelheid ?


Ik heb in rij 37 een pagebreak ingevoerd

Je kunt na het afdrukken alles opruimen met:

Code:
Sub M_snb()
  usedrange.offset(37).clearcontents
End Sub
 
Laatst bewerkt:
@snb
De aangemaakte werkbladen worden na het printen automatisch verwijderd dus voor de bestandsgrootte hoeft TS niet te vrezen.
Wat betreft snelheid van de opbouw v/d printopdracht kan je wel gelijk hebben, maar heb het uiteraard niet getest bij grotere aantallen.:d
Wijzig deze regel
Code:
ActiveSheet.[M1] =  i
in
Code:
ActiveSheet.[M1] = ActiveSheet.[M1] + i
 
Laatst bewerkt:
Svp niet onnodig citeren !

Toch nog maar eens iets beter code lezen.
Je kunt de code ook gewoon testen.

Het werkblad wordt niet gekopieerd, alleen het gebied A1:M38.
Dat leidt natuurlijk tot een veel kleiner bestand dan de andere oplossingen die steeds nieuwe werkbladen maken.
Jouw vraag ging toch over snelheid ?


Ik heb in rij 37 een pagebreak ingevoerd

Je kunt na het afdrukken alles opruimen met:

Code:
Sub M_snb()
  usedrange.offset(37).clearcontents
End Sub
 
Hallo Warme bakkertje:

Dit schijnt te werken, het printen (ik heb er 50 geprint) gaat inderdaad veel sneller. Alles wordt nu achter elkaar geprint.
Is het mogelijk om cel M1 het aantal geprinte formulieren te laten optellen bij het aantal wat reeds in cel M1 vermeld staat. In dit geval 300
Dit in verband met het printen van een nieuwe reeks die moet beginnen bij het nummer waar de printopdracht gestopt is.
We kunnen dit natuurlijk ook handmatig invullen maar automatisch zou natuurlijk makkelijker zijn.
 
Onderaan de code, net boven Screenupdating plaats je volgende regel.
Code:
Sheets("Blad1").[M1] = Sheets("Blad1").[M1] + invoer
Je moet nu nog wel begingetal ingeven, de volgende keren wordt het aantal afdrukken automatisch bijgeteld bij M1.
 
Bedankt !!! het werkt !

Hallo Warme Bakkertje:

Dit is de oplossing, ik heb hem thuis geprobeerd door de formulieren als pdf uit te printen en alles werkt naar behoren.
Zal hem morgen ook nog op het werk op de echte printer proberen en heb goed vertrouwen dat het ook daar werkt.
Het ophogen en ook de optelling in cel M1 werkt perfect. Ik ben zeer blij dat het werkt en jou uitermate dankbaar dat je de tijd en het geduld hebt genomen mij verder te helpen.

Hartstikke bedankt ook namens mijn collega's die hier ook met moeten werken. :thumb::thumb::thumb:
Volgens mij stond de topic al op opgelost.
 
Blij dat het werkt (afwachten tot morgen).
Het meeste lof verdient eigenlijk Cobbe die de basis gelegd heeft, ik heb enkel het samenvoegen van alle werkbladen tot 1 printopdracht toegevoegd.
 
Hallo warme bakkertje en Cobbe:

Heb vanmorgen getest op mijn werk en geprobeerd met 10 stuks, dat werkte perfect. Daarna 500 prints gemaakt en ook dat is prima en vooral snel gelukt.
Ik wil jullie dan ook heel hartelijk bedanken voor het geduld en de kennis die jullie in het probleem hebben gestopt.

Bedankt en misschien tot een volgend probleem.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan