Word 문서 바닥글에 일련 번호 또는 증분 번호 인쇄

Word 문서 바닥글에 일련 번호 또는 증분 번호 인쇄

나는 이것이 속임수일 가능성이 있다고 생각하지만 좋은 답변을 찾을 수 없으며 "이미 답변이 있을 수 있는 질문"에는 Excel에 대한 답변만 표시됩니다.

인쇄된 각 문서에 일련 번호(일명 증분 번호)를 부여하여 인쇄된 문서를 추적하려고 합니다.

목표는 마스터 문서 하나를 갖고 로그를 기록하는 것입니다.

각 로그에 증분/고유 번호가 있으면 사람들이 해당 로그를 쉽게 참조할 수 있도록 마스터 문서에 해당 고유 번호를 쓸 수 있기를 바랍니다.

복잡한 VBA를 찾았지만 Word에 VBA 코드를 추가하는 것이 익숙하지 않아 복잡해 보였습니다. Word에는 내가 누락한 기능이 내장되어 있다고 생각했습니다.

나는 필드가 다음과 같기를 원합니다.

Doc #: 1

다음에 인쇄할 때 바닥글에 표시되어야 합니다.

Doc #: 2

등등

감사합니다,

추신: 현재 우리가 사용하는 것은 Office 2013입니다.

https://stackoverflow.com/questions/50769735/improving-vba-macro-in-word-to-automatically-create-file-relating-to-document-na

문서 Word에 매크로 포함

Word 문서 바닥글에 일련 번호 또는 증분 번호 인쇄

https://stackoverflow.com/questions/48909968/running-a-macro-before-printing-a-word-document

답변1

Seem의 VBA가 좋은 방법입니다. 저는 제 문제에 적합하고 작동하는 솔루션을 하나만 찾았습니다.

방법 1:(이 방법을 사용하면 문서를 이식할 수 있지만 문서마다 고유 번호가 없습니다.)

Serial_Numbered_Doc_Template.docm

  • 먼저 "Counter"라는 "사용자 정의 문서 속성"을 만들고 초기 값을 0(또는 무엇이든)으로 설정합니다.

  • 인쇄할 문서에 삽입(CTRL + F9)

  • 이 모듈은 모듈이 호출될 때마다 숫자를 1씩 증가시킵니다.

Sub FilePrint()
    Dim i As Long, j As Long
    With ActiveDocument
        j = CLng(InputBox("How many copies to print?", "Print Copies"))
        For i = 1 To j
            With .CustomDocumentProperties("Counter")
                .Value = .Value + 1
            End With
            .Fields.Update
            ActiveDocument.PrintOut Copies:=1
        Next
        .Save
    End With
End Sub   
  • 이제 인쇄할 때 자동으로 이 하위를 호출하도록 "EventClassModule"을 수정했습니다.
Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
    ' MsgBox "Before Print"
    ' Call Greeting
    ' Call SerialNumber
    Cancel = True
    Call FilePrint
End Sub

방법 2:(이 방법은 파일을 사용하여 여러 단어 문서가 동일한 설정/업데이트 로그를 공유하고 각 단어 문서가 고유 번호를 가져야 한다는 이점이 있는 일련 번호를 추적합니다.)

나는 여기에 있는 이 가이드를 따랐습니다 -->

https://wordmvp.com/FAQs/MacrosVBA/NumberCopiesOf1Doc.htm

물론 사이트에 게시된 코드는 정확하지 않습니다.

문제는 다음 코드 조각이 필요하다는 것입니다.

' Display message, title, and default value.
Dim SerialNumber As String
NumCopies = Val(InputBox(Message, Title, Default))
SerialNumber = System.PrivateProfileString("C:\settings.txt", "MacroSettings", "SerialNumber")

Dim SerialNumber As String웹사이트에 없는 줄을 참고하세요 . 그렇지 않으면 이 질문에서 오류가 발견됩니다. >>

https://stackoverflow.com/questions/48348049/vba-compile-error-expected-function-or-variable

후손을 위해 여기에 가이드를 복사하겠습니다.

또한 사이트에 "settings.txt"에 대한 두 위치가 표시되지만 하나는 "Settings.Txt"이고 다른 하나는 "Settings.txt"라는 또 다른 변경 사항을 적용했습니다. 나는 Linux 사용자이고 대문자와 공백 등이 앞으로 어떻게 당신을 망칠 수 있는지 알고 있기 때문에 "settings.txt"로 전환했습니다.

------------------------------------------------`

SerialNumber일련 번호를 표시하려는 문서에 이름이 지정된 책갈피를 만듭니다 . 번호를 원하는 위치라면 머리글이나 바닥글에 있을 수 있습니다. 그런 다음 문서를 인쇄하려면 다음 명령이 포함된 매크로를 만듭니다.

만들려는 복사본 수를 묻고 각 복사본에 순차적으로 번호를 매깁니다. 이 매크로가 처음 실행되면 첫 번째 복사본의 번호가 1로 지정되고 실행이 완료되면 설정.TXT 파일에 해당 번호가 저장됩니다. 마지막 복사본의 번호보다 1이 더 많습니다. 다음에 매크로가 실행되면 해당 번호부터 복사본 번호가 매겨지기 시작합니다. 처음 시작할 때 숫자가 1이 아닌 다른 숫자에서 시작하도록 하려면 매크로를 실행하고 복사본 수로 1을 입력한 다음 Settings.Txt 파일을 열고 파일의 숫자를 원하는 숫자로 바꿉니다. 이후 언제든지 시리즈를 특정 번호에서 시작하려면 해당 파일을 열고 그 안에 있는 번호를 시리즈의 첫 번째 번호로 바꿀 수 있습니다.

Sub SerialNumber()
    '
    ' SerialNumber Macro
    '
    '
    Dim Message  As String, Title  As String, Default  As String, NumCopies  As Long
    Dim Rng1   As Range
    
    ' Set prompt.
    Message = "Enter the number of copies that you want to print"
    ' Set title.
    Title = "Print"
    ' Set default.
    Default = "1"
    
    ' Display message, title, and default value.
    Dim SerialNumber As String
    NumCopies = Val(InputBox(Message, Title, Default))
    SerialNumber = System.PrivateProfileString("W:\settings.txt", _
        "MacroSettings", "SerialNumber")
    
    If SerialNumber = "" Then
        SerialNumber = 1
    End If
    
    Set Rng1 = ActiveDocument.Bookmarks("SerialNumber").Range
    Counter = 0
    
    While Counter < NumCopies
        Rng1.Delete
        Rng1.Text = SerialNumber
        ActiveDocument.PrintOut
        SerialNumber = SerialNumber + 1
        Counter = Counter + 1
    Wend
    
    'Save the next number back to the Settings.txt file ready for the next use.
    System.PrivateProfileString("W:\settings.txt", "MacroSettings", _
        "SerialNumber") = SerialNumber
    
    'Recreate the bookmark ready for the next use.
    With ActiveDocument.Bookmarks
        .Add Name:="SerialNumber", Range:=Rng1
    End With
End Sub

참고: "settings.txt"의 위치를 ​​LAN 기본 위치로 변경할 수 있거나 변경해야 할 수도 있습니다!

settings.txt
[MacroSettings]
SerialNumber=1

관련 정보