O VBA da Seem é o caminho a seguir, encontrei apenas uma solução que se encaixa no meu problema e funciona.
Método 1: (Preferencial, pois não usa arquivo de texto separado para armazenar o número de série do documento, mas usa uma propriedade de documento personalizada)
Veja > > link
Minha postagem no blog:
Eu recomendaria a leitura através do Create Simple Greeting Macro - Word - Microsoft Office se você for iniciante em Macros.
Além disso, você desejará automatizá-lo assim que ele funcionar conforme o esperado por meio deste post > > Executar a macro antes de imprimir - Word - Microsoft Office
Aqui está meu produto final que é "portátil" para você explorar:
link
Serial_Numbered_Doc_Template.docm
- Primeiro, crie uma "Propriedade de documento personalizada" chamada "Contador" e defina o valor inicial como 0 (ou qualquer outro).
-
Insira no documento onde você deseja que ele seja impresso (consulte o link para obter instruções)
-
Pressione Alt + F11 para abrir o VBA Editor e criar um novo módulo
Sub FilePrint () Dim i As Long, j As Long Com ActiveDocument j = CLng (InputBox ("Quantas cópias imprimir?", "Imprimir Cópias")) Para i = 1 para j Com .CustomDocumentProperties ("Contador") .Valor = .Valor + 1 Fim com .Fields.Update .Imprimir Próximo .Salve Fim com End Sub
-
Agora eu modifiquei meu "EventClassModule" para chamar este sub automaticamente ao imprimir:
Privado Sub App_DocumentBeforePrint (ByVal Doc como documento, Cancelar como booleano) 'MsgBox "antes da impressão" 'Chamada saudação 'Call SerialNumber Cancelar = verdadeiro Chame o FilePrint End Sub
Método 2:
É claro que o código postado no site está incorreto, o que pode ser encontrado aqui @ link
O problema é que ele precisa ter este snippet de código:
' Display message, title, and default value.
Dim SerialNumber As String
NumCopies = Val(InputBox(Message, Title, Default))
SerialNumber = System.PrivateProfileString("W:\settings.txt", _
"MacroSettings", "SerialNumber")
Anote a linha Dim SerialNumber As String
que NÃO está no site. Sem isso, você recebe o erro encontrado nesta pergunta > > link
Para a posteridade, vou copiar o guia aqui:
Observe também que fiz uma outra alteração, a qual mostra que o site mostra dois locais para "settings.txt", mas um é "Settings.Txt" e o outro é "Settings.txt". Eu mudei para "settings.txt" como sou um cara do Linux e sei como caps e espaços etc podem bagunçar você no futuro.
----------------------------------------------- - '
Crie um marcador chamado SerialNumber
no documento onde você deseja que o número de série apareça. Pode estar no cabeçalho ou no rodapé se é nesse local que você deseja o número. Em seguida, crie uma macro contendo os seguintes comandos para imprimir o documento.
Ele pedirá o número de cópias que você deseja fazer e numerará seqüencialmente cada cópia. Na primeira vez que essa macro for executada, a primeira cópia será numerada como 1 e quando terminar a execução, armazenará no arquivo aSettings.Txt o número que é mais um que o número da última cópia. Da próxima vez que a macro for executada, ela começará a numerar as cópias daquele número. Se, ao iniciar pela primeira vez, você quiser que os números iniciem em um número diferente de 1, execute a macro, inserindo 1 como o número de cópias e, em seguida, abra o arquivo Settings.Txt e substitua o número do arquivo pelo número desejado. como o primeiro da série. A qualquer momento, se você quiser que a série comece em um número específico, você poderá abrir esse arquivo e substituir o número nele pelo número que você deseja que seja o primeiro da série. / p>
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
Nota: Você pode / deve provavelmente mudar a localização de "settings.txt" para a sua localização preferida da LAN!
settings.txt
[MacroSettings]
SerialNumber=1