• 0
Sign in to follow this  
MANAU

Contador Automático Em Documento Do Word

Question

Tenho a seguinte tarefa e não sei nem por onde começar, sei que pode ser feito com o VB. Preciso criar uma macro que conte quantas vezes que o normal.dot já foi aberto e salvo. Ele tem que ter uma numeração própria, 001,002,003... Imaginei o seguinte, que a macro busque o número que deve ser inserido em um arquivo *.txt e que ao ser aberto o normal.dot exiba o número gravado no arquivo *.txt, se aquele documento for alterado e salvo, a macro acrescenta +1 no arquivo *.txt, se não for salvo ele não faz nada. Gente se alguém puder me ajudar.... to precisando. Desde já agradeço aqueles que tiverem pelo menos curiosidade de ler este arquivo.. Valeu galera, t++++

Share this post


Link to post
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Não sei se é bem o que você quer, mas utilizando o evento Close do objeto Document no normal.dot, consegui fazer com que ele incrementasse o contador apenas quando um documento tivesse sido salvo antes de ter sido fechado (olhando a propriedade Saved de ActiveDocument). O código usado foi:

Private Sub Document_Close()
    If ActiveDocument.Saved Then
        contador = 0
        arquivo = "c:\contador.txt"
        If Dir(arquivo) <> vbNullString Then
            n = FreeFile()
            Open arquivo For Input As #n
            Input #n, contador
            Close #n
        End If
        contador = contador + 1
        n = FreeFile()
        Open arquivo For Output As #n
        Print #n, contador
        Close #n
    End If
End Sub

Espero ter ajudado.

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Não sei se vai funcionar, porque não sei como é que eu faço para implantar. Pode me ajudar? biggrin.gif

Share this post


Link to post
Share on other sites
  • 0

Abra o Word, pressione ALT+F11, do lado esquerdo, em "Projeto - Normal", você terá uma hierarquia assim: "Normal" -> "Microsoft Word Objetos" -> "ThisDocument". Pois bem, dê um duplo-clique em "ThisDocument" e cole o código acima na janela branca que aparecerá ao lado. Apenas preste atenção que o código deve ficar no "ThisDocument" do "Normal" (haverá um outro "ThisDocument" abaixo no "Project (Documento1)").

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Amigo, dessa maneira só de abrir o Word o arquivo já grava outro número. Eu sei que já estou pedindo muito, mas você foi o único que respondeu, não teria uma maneira de só acrescentar 1 se o arquivo for salvo? E mostrar qual o número que está no contador.txt dentro do documento do Word? huh.gif

Share this post


Link to post
Share on other sites
  • 0

Me desculpa esqueci de agradecer... valeu mesmo, já me ajudou bastante, agora já tenho uma luz... :-) cool.gif

Share this post


Link to post
Share on other sites
  • 0

Amigo, dessa maneira só de abrir o Word o arquivo já grava outro número. Eu sei que já estou pedindo muito, mas você foi o único que respondeu, não teria uma maneira de só acrescentar 1 se o arquivo for salvo?  E mostrar qual o número que está no contador.txt dentro do documento do Word? huh.gif

Não, ele não grava outro número só de abrir o Word. É necessário que o arquivo seja salvo antes de ser fechado para que isso ocorra. Por isso que fiz checar a propriedade Saved.

Para mostrar o número no documento você pode incluir o seguinte:

Private Sub Document_New()
    arquivo = "c:\contador.txt"
    If Dir(arquivo) <> vbNullString Then
        n = FreeFile()
        Open arquivo For Input As #n
        Input #n, contador
        Close #n
    End If
    Selection.TypeText "Documento Nº: " & contador
End Sub

Isso pode entrar exatamente abaixo ou acima do outro código.

O único problema é que isso parece não valer para o primeiro documento (aquele que aparece ao iniciar o Word).

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Colei o código dessa maneira

Private Sub Document_Close()
   If ActiveDocument.Saved Then
       contador = 0
       arquivo = "C:\Documents and Settings\Rochinha\Dados de aplicativos\Microsoft\Modelos"
       If Dir(arquivo) <> vbNullString Then
           n = FreeFile()
           Open arquivo For Input As #n
           Input #n, contador
           Close #n
       End If
       contador = contador + 1
       n = FreeFile()
       Open arquivo For Output As #n
       Print #n, contador
       Close #n
   End If
End Sub
Private Sub Document_New()
   arquivo = "C:\Documents and Settings\Rochinha\Dados de aplicativos\Microsoft\Modelos"
   If Dir(arquivo) <> vbNullString Then
       n = FreeFile()
       Open arquivo For Input As #n [U]*****>>>> Nesta linha!!!![/U]
       Input #n, contador
       Close #n
   End If
   Selection.TypeText "Documento Nº: " & contador
End Sub

E ele me informa um erro na linha marcada, e para mostrar o número como cabeçalho da página. Não perde a paciência não... smile.gif

Share this post


Link to post
Share on other sites
  • 0

Eu quero colocar o cabeçalho do arquivo aberto da seguinte maneira:

Data de Criação: 27/06/2004 - Arquivo Gerado Nº: 00001

De modo que o usuário não possa alterá-lo, quando for aberto o documento gostaria que isso já aparece. Da maneira que você me mandou, não sei se sou eu que estou fazendo errado.. (muito provavelmente) ... só depois que salva é que aparece o número do arquivo, gostaria que tivesse esse formato. Entedeu como? Eu sei que já estou querendo d+, mas eu não sei nada de programação... Se você ainda estiver com paciência v se você consegue.... blink.gif

Share this post


Link to post
Share on other sites
  • 0

Repare na variável "arquivo":

arquivo = "C:\Documents and Settings\Rochinha\Dados de aplicativos\Microsoft\Modelos"
O caminho informado não é de um arquivo e sim de uma pasta. O correto seria algo do tipo:
arquivo = "C:\Documents and Settings\Rochinha\Dados de aplicativos\Microsoft\Modelos\arquivo.txt"

wink.gif ok?

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Sim, entendi... só acho que não haja uma maneira de impedir que o usuário altere isso. De qualquer forma, basta você trocar a linha...

Selection.TypeText "Documento Nº: " & contador
... por:
Selection.TypeText "Data de Criação: " & Date() & " - Arquivo Gerado Nº: " & format(contador, "00000")

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Graymalkin, ainda não aparece quando eu abro o documento, só aparece depois que eu salvo. O que estou fazendo errado?

Private Sub Document_Close()
   If ActiveDocument.Saved Then
       contador = 0
       arquivo = "c:\contador.txt"
       If Dir(arquivo) <> vbNullString Then
           n = FreeFile()
           Open arquivo For Input As #n
           Input #n, contador
           Close #n
       End If
       contador = contador + 1
       n = FreeFile()
       Open arquivo For Output As #n
       Print #n, contador
       Close #n
   End If
End Sub
Private Sub Document_New()
   arquivo = "c:\contador.txt"
   If Dir(arquivo) <> vbNullString Then
       n = FreeFile()
       Open arquivo For Input As #n
       Input #n, contador
       Close #n
   End If
   Selection.TypeText "Data de Criação: " & Date & " - Arquivo Gerado Nº: " & Format(contador, "00000")
End Sub

Share this post


Link to post
Share on other sites
  • 0

huh.gif Aqui funciona certo. Quando você clica no menu "Arquivo" e escolhe "Novo...", no documento criado não aparece?

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Não tem um modo de quando abrir já ir direto pra tela sem ter que criar um novo documento? Quando abrir já aparecer....

Share this post


Link to post
Share on other sites
  • 0

Foi o que disse no 4º parágrafo 7 tópicos acima. Não sei se isso é possível, mas pensando bem acho que não, já que o arquivo inicialmente aberto é o Normal.dot e a partir dele é que essas rotinas passam a valer. Por isso que Document_New() não é executada quando o Word é aberto.

De qualquer forma, se eu conseguir imaginar uma solução te passo.

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Graymalkin

Colega valeu mesmo, muito obrigado, se você tiver alguma idéia me manda por favor.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this