Em meu trabalho redijo vários ofícios seguido do número de ordem e o ano: 001/2020.
Eu gostaria se possível de que a numeração ficasse automática a cada novo documento criado numa pasta específica.
Exemplo: fiz o ofício n. 001/2020; a numeração do seguinte documento será 002/2020 e assim por diante até findar o ano. No ano seguinte começa tudo de novo.
O ideal é que esse arquivo seja salvo com esse nome da numeração.
É possível?
Boa tarde
De uma olhada nesta solução.
https://wiki.documentfoundation.org/Extensions/Projects/Edidoc/pt-br
Não sei se esta sendo atualizado, mas tem o contato dos desenvolvedores.
Muito obrigada pela resposta, estudarei o assunto.
@SandradeAlencar e @schiavinatto, segue o código ajustado enviado pelo @schiavinatto
Macro para Uso no Writer
Sub SalvarProximoArquivo
' Pasta = DIRETORIO DE GRAVAÇÂO
Pasta = "C:\Users\GILBERTO\Dropbox\Public\ask.libreoffice\Valentim\"
Ano = 2020
Dim S As String, I As Long
If Right(Pasta, 1) <> "\" Then Pasta = Pasta & "\"
Texto = Texto & "*.odt"
'a extensão pode também ser colocada como parametro:
'Texto = Texto & "*." & Extensao
S = Dir(Pasta & Texto) 'S contém o nome do 1º ficheiro encontrado
Do Until S = ""
I = I + 1
S = Dir() 'S contém o nome do proximo ficheiro da sequência
Loop
ContarFicheiros = I
Arq = I
If Arq < 10 Then : Arq = "00" & Arq ': End If
ElseIf Arq < 100 Then : Arq = "0" & Arq ': End If
ElseIf Arq < 1000 Then : Arq = Arq : End If
Dim document as object
Dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
pasta = ConvertToURL(Pasta)
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
PastaArquivo = Pasta & Arq &"_" & Ano & ".odt"
args1(0).Value = PastaArquivo
args1(1).Name = "FilterName"
args1(1).Value = "writer8"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
end Sub
@schiavinatto, neste comando Pasta = "C:\Users\GILBERTO\Dropbox\Public\ask.libreoffice\Valentim\"
,você precisa converter o mesmo em URL, utilizando o ConvertToURL, pois os espaços em branco, a programação não entende e transforma em %. Então eu acrescentei Pasta = ConvertToURL(Pasta)
Eu @schiavinatto…
Alterei (na 7a. linha) a extensão para contar somente odt, não contar arquivo(s) abertos se existir.
Ola @SandradeAlencar, caso queira dar um upgrade na macro acima com a solução do @Conras, acrescente no final antes de End Sub.
Veja a Mensagem, o que faz.
MsgBox "O Arquivo salvo será fechado." & Chr(13) & _
" E será aberto outro em branco.", 0, " A T E N Ç Ã O"
CreateUnoService("com.sun.star.frame.DispatchHelper") _
.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:CloseWin", "", 0, args1())
oNuevoDocumento = StarDesktop.loadComponentFromURL( "private:factory/swriter", "_default", 0, Array() )
Eu não entendo nada de programação, só sei que existe he he he… Mas vou estudar um pouco e me inteirar do assunto. Muito obrigada por disponibilizar tais dados.
Ola @SandradeAlencar, Macro incompleta, quando alguém corrigir, grava-la em Minhas macros e liga-la a um Menu…
A Macro conta os Arquivos da Pasta, acrescenta 1 + a terminação _2020.odt e salva.
Sub SalvarProximoArquivo
' Pasta = DIRETORIO DE GRAVAÇÂO
Pasta = "C:\Users\GILBERTO\Dropbox\Public\ask.libreoffice\Valentim\"
Ano = 2020
Dim S As String, I As Long
If Right(Pasta, 1) <> "\" Then Pasta = Pasta & "\"
Texto = Texto & "*.*"
'a extensão pode também ser colocada como parametro:
'Texto = Texto & "*." & Extensao
S = Dir(Pasta & Texto) 'S contém o nome do 1º ficheiro encontrado
Do Until S = ""
I = I + 1
S = Dir() 'S contém o nome do proximo ficheiro da sequência
Loop
ContarFicheiros = I
Arq = I+1
If Arq < 10 Then : Arq = "00" & Arq ': End If
ElseIf Arq < 100 Then : Arq = "0" & Arq ': End If
ElseIf Arq < 1000 Then : Arq = Arq : End If
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
PastaArquivo = Pasta & Arq &"_2020.odt"
args1(0).Value = PastaArquivo
args1(1).Name = "FilterName"
args1(1).Value = "writer8"
CreateUnoService("com.sun.star.frame.DispatchHelper") _
.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:SaveAs", "", 0, args1())
end Sub
Até PastaArquivo esta gerando certo a gravação final que da erro.
Esta gerando este erro:
Necessita alguém com mais experiência em programação, corrigir ( Alô: @Grafeno, @ohallot, @Conras ), faça correção em Adicionar Resposta, para pontuar.
Vou acompanhar esse assunto. Obrigada.
@schiavinatto não cheguei a programar em Writer ainda. Não sei como funciona. Vou tentar algo aqui e retorno. Já possuo algo desta necessidade, mas em Calc.
Fiquei interessada nessa sua solução em Calc. Como devo proceder para obter sua ajuda?
Eu prefiro trabalhar com planilhas, inclusive eu faço esses documentos também no Calc, porque consigo mudar vários campos de forma automática como data, data por extenso, número do documento. Obrigada.
@SandradeAlencar, caso queira enviar suas necessidades para o @schiavinatto ou para mim, em nossos perfis possui nossos e-mails de contato.
Ola @Conras, acerte seu perfil, não esta aparecendo o email de contato, preencha no campo email. Se colocou informação no Quadro a direta, não é visível, (deve ser bug ) já informei o administrador. Abraço.
Ola @SandradeAlencar, a solução em Calc e mais versátil, se os Ofícios for um texto padrão com poucas alterações poderá ser um arquivo com 3 planilhas: Formulário e preenchido e salvo em Banco de dados e uma terceira para Consulta.
Não haveria necessidade de Diretório para arquivo dos Ofícios.
Na verdade os ofícios que utilizo são 16, de acordo com aquelas 16 planilhas (as quais postei dúvidas aqui). Nestes 16 ofícios podem ocorrer variações com as seguintes hipóteses: 1) inclusão de alunos; 2) exclusão de aluno; 3) aumento de cotas; 4) diminuição de cotas 5) nenhuma alteração. Então, nesses ofícios eu copio os dados dos bolsistas das planilhas de forma manual e os colo no ofício.
Ola @SandradeAlencar, me envie o arquivo completo, veja contato aqui: https://wiki.documentfoundation.org/User:Schiavinatto, pode confiar sigilo de dados garantido.
Enviei e-mail para gilbertoschiavinatto@yahoo.com.br. Obrigada.
Obrigada pessoal.