Ir para conteúdo
Fórum Script Brasil
  • 0

Contador Automático Em Documento Do Word


MANAU

Pergunta

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++++

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...