Autonumerowanie egzemplarzy (nie stron) wydruku w Word


(Michal Postek) #1

Witam, poszukuję programu lub jakiegoś sposobu, który umożliwiłby automatyczne dodanie gdzieś w dokumencie word (np. w nagłówku, stopce lub na pojedynczej stronie) informacji o liczbie wydrukowanych egzemplarzy i ich autonumerowaniu. Żeby uzmysłowić dokładniej czego szukam:

dokument word "Dok1.doc/docx" a w jego np. stopce "Egzemplarz nr 1", później drukuje np. poprawioną wersję tego samego dokumentu, np. poprawione literówki, no i w tym samym miejscu pojawia mi się "Egzemplarz nr 2"

Czy istnieje coś takiego wbudowanego w word 2007 i nowsze? Jeśli nie to czy jest jakiś program który to umożliwi?

Z góry dziękuję za każdą pomoc, pozdrawiam


(Drobok) #2

Raczej ciężko takie coś zrobić, bo drukujesz X razy dany egzemplarz. Więc tak czy siak musisz tą wartość zmienić.


(mrFreeze) #3

Może istnieje takie coś ale nigdy nie słyszałem.

dokument word "Dok1.doc/docx" a w jego np. stopce "Egzemplarz nr 1", później drukuje np. poprawioną wersję tego samego dokumentu, np. poprawione literówki, no i w tym samym miejscu pojawia mi się "Egzemplarz nr 2"

No masz problem ciężko dopisać długopisem “2” myślałem, że np. drukujesz 100 egzemplarzy i chcesz żeby każdy miał oddzielny nr.


(Michal Postek) #4

Dokładnie o to mi chodzi, przecież napisałem :stuck_out_tongue:

Będę to wykorzystywał np. po zmianie w dokumencie i drukował jako wersja 2, 3, 5 czy 10, ale też jako numer wydruku tej samej wersji, bez żadnych zmian.

Pytanie czy albo to albo to jest w ogóle możliwe?


(Drobok) #5

To pierwsze (o czym wcześniej wspomniałem) piszesz ręcznie (nagłówek / stopka i tak zmienia się wszędzie).

Natomiast numerowanie egzemplarzy http://word.tips.net/T000844_Printing_Copy_Numbers.html


(Michal Postek) #6

Mam problem z użytkowaniem tego sposobu który podał @drobok.

Mianowicie, przeczytałem dokładnie cały tekst kilka razy i niestety różnych opcji próbowałem, ciągle nie działa…

Z tekstu rozumiem, że w miejscu w którym chce aby numer drukowanej kopii się pojawił mam wkleić w nawiasy {} coś takiego:

DOCVARIABLE "CopyNum"

Dokładniej mówiąc, wciskam CTRL+F9, pojawiają się nawiasy {} i wklejam to co wyżej. Z tym, że wtedy w tym miejscu jest puste miejsce, nic się nie pojawia. Postanowiłem więc spróbować wkleić ten dłuższy kod:

Public Sub PrintNumberedCopies1()

    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

Dodałem go również w nawiasy {} w/w metodą. Wtedy w tym miejscu pojawia się komunikat: “Błąd! Nie zdefiniowano zakładki.”

Pomyślałem więc, że spróbuję to zrobić tak iż wrzucę do jednych nawiasów {} ten długi kod, a w miejscu gdzie ma się pojawić numer kopii wrzucę tylko w nawiasy ten kod: DOCVARIABLE “CopyNum”.

Niestety ale również nie działa. Prosiłbym o jakąś pomoc jak to ogarnąć. O w/w błędzie szukałem, dodawałem spis treści, aktualizowałem go i nic nie pomogło. Generalnie próbowałem naprawdę wielu sposobów. Mam word 2010.

Z góry dziękuję za jakieś wskazówki,

pozdrawiam


(Drobok) #7

ctrl+f9 :arrow: wpisujesz między klamry

DOCVARIABLE "CopyNum"

alt+f11 :arrow: ppm na word object :arrow: insert module :arrow: wpisujesz

Public Sub PrintNumberedCopies1()

    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

alt+f8 :arrow: enter :arrow: ilość kopii :arrow: enter :arrow: od którego zaczynasz :arrow: enter


(Michal Postek) #8

Super, działa! Dziękuję za pomoc. Nie znam VBA, ale jakby ktoś miał wolną chwilę to mógłby zmienić ten kod na taki aby pokazywało tak:

“Strona: (numer kopii) / (liczba wszystkich kopii)”?

Z góry bardzo dziękuję :slight_smile:


(Drobok) #9

Zamień

ActiveDocument.Variables("CopyNum") = _

            lCopyNumFrom + lCounter

Na

ActiveDocument.Variables("CopyNum") = _

            "Strona: "&lCopyNumFrom + lCounter&" z "&lCopiesToPrint

(Michal Postek) #10

Wyrzuca błąd składni: Expected end of statement.

Niestety ale nie znam ani trochę VBA żeby być w stanie poprawić ten kod, dlatego prosiłbym o pomoc :slight_smile:

Zaznacza przy tym błędzie ten fragment kodu: " z ".


(Drobok) #11

Mogłem przetestować :stuck_out_tongue:

Jak dorzucisz nawias do wyrażenia przez z będzie ok. Tu masz całość z w/w poprawkami

Public Sub PrintNumberedCopies1()

    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") = "Strona: " & (lCopyNumFrom + lCounter) & " z " & lCopiesToPrint

        ' print this numbered copy

        ActiveDocument.PrintOut Copies:=1

    Next lCounter

End Sub

(Michal Postek) #12

Dziękuję bardzo za pomoc, to co podałeś działa w jak najlepszym przypadku :slight_smile:

Pozdrawiam