Macro voor nummering het aantal prints

Status
Niet open voor verdere reacties.

AnnetteGerrits

Gebruiker
Lid geworden
4 nov 2015
Berichten
18
Hoi allemaal,

Ik heb helemaal geen verstand of ervaring in het werken met VBA. Ik kan kant en klare codes/module/macros van internet halen en die in VBA plakken, maar als deze niet werken ben ik helemaal negens.
Nu ben ik aan het proberen om een macro werkend te krijg waarmee ik een kopie voor elke print een ander nummer geef in word. Via internet heb ik de volgende code gevonden:
Code:
Public Sub Print_TR_Numbers()
    Dim varItem As Variable
    Dim bExists As Boolean
    Dim lCopiesToPrint As Long
    Dim lCounter As Long
    Dim lCopyNumFrom As Long

    ' ensure our doc variable exists
    bExists = False
    For Each varItem In ActiveDocument.Variables
        If varItem.Name = "CopyNum" Then
            bExists = True
            Exit For
        End If
    Next varItem

    ' initialize document variable if doesn't exist
    If Not bExists Then
        ActiveDocument.Variables.Add _
            Name:="CopyNum", Value:=0
    End If

    ' ask how many to print
    lCopiesToPrint = InputBox( _
        Prompt:="How many copies?", _
        Title:="Print And Number Copies", _
        Default:="1")

    ' ask where to start numbering
    lCopyNumFrom = CLng(InputBox( _
        Prompt:="Number at which to start numbering copies?", _
        Title:="Print And Number Copies", _
        Default:=CStr(ActiveDocument.Variables("CopyNum") + 1)))

    ' loop through the print-write-print cycle
    For lCounter = 0 To lCopiesToPrint - 1
        ' update the document variable
        ActiveDocument.Variables("CopyNum") = _
            lCopyNumFrom + lCounter
        ' print this numbered copy
        ActiveDocument.PrintOut Copies:=1
    Next lCounter

End Sub

Deze doet exact wat ie moet doen (vragen hoeveel prints ik wil en vanaf welk nummer beginnen met printen, en vervolgens onthouden waar ie gebleven is). Het enige wat ik er het liefst eruit wil halen is dat stukje dat onthoud waar ie gebleven is. Hij zou nadat het printen compleet is, niet het laatste nummer moeten laten zien, maar geen informatie (dus gewoon blank). Ik denk dat het iets te maken zou moeten hebben met een herhaling van het laatste stukje (loop trough the print-write-print cycle) maar ik weet niet hoe dat ik het moet verwerken.

Daarnaast zou ik ook graag (maar weet niet of dat dat mogelijk is) deze macro automatisch laten draaien op het moment dat er via het menu (of ctrl+P) wordt geprint. Kan dit, of kun je een macro alleen runnen door de specifieke knop of snel toets te gebruiken?

Ik heb een leeg voorbeeld bestandje aangehangen waarin de code zoals ik hem nu heb staat.

Alvast bedankt voor de hulp.

Met vriendelijke groet,
Annette Gerrits

Bekijk bijlage example TR.docm
 
Het enige wat ik er het liefst eruit wil halen is dat stukje dat onthoud waar ie gebleven is. Hij zou nadat het printen compleet is, niet het laatste nummer moeten laten zien, maar geen informatie (dus gewoon blank).
Ik snap niet helemaal wat je hier bedoelt. Maar als je de DocVar in de koptekst weer op 0 wilt zetten of leegmaken, kan dat zo:

Code:
    ActiveDocument.Variables("CopyNum") = 0
    ' ActiveDocument.Variables("CopyNum") = ""     Of leegmaken.
    Set aDoc = ActiveDocument
    With aDoc
        .Range.Fields.Update
        For i = 1 To .Sections.Count
            With .Sections(i)
                For j = 1 To .Headers.Count
                    .Headers(j).Range.Fields.Update
                Next j
            End With
        Next i
    End With
    Application.ScreenRefresh
 
Dat deed het hem inderdaad!

Heel erg bedankt OctaFish!!

Met vriendelijke groet,
Annette Gerrits
 
Ik zou de hele code vervangen door:

Code:
Sub M_snb()
    x = InputBox("Aantal kopieën", "Afdrukken", 1)
    y = InputBox("Startnummer", "Afdrukken", 1)

    With ThisDocument
        For j = y To y + x + 1
            .Variables("c_Num") = IIf(j = y + x + 1, " ", j)
            For Each it In .Sections
                For Each it1 In it.Headers
                  it1.Range.Fields.Update
                Next
                For Each it1 In it.Footers
                  it1.Range.Fields.Update
                Next
            Next
            If .Variables("c_Num") <> " " Then .PrintOut
        Next
    End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan