com.sun.star.lang.DisposedException

Depois de instalar a última versão do LibreOffice no swriter, no windows 10 comecei a receber
esta mensagem tramada e aborrecida porque trava a minha macro e não numera mais o meu
documento automáticamente: com.sun.star.lang.DisposedException
Não consigo perceber o que tenho que fazer. Tanto trabalho (para principiante) , quando tudo estava pronto para colocar em produção sai-me esta, às tantas terei de voltar à versão anterior.
Por favor alguém me ajuda. Obrigado

Poderia postar a macro :slight_smile:

Bom dia,
Criei uma macro que atribui o Último numero de documento gravado numa dada pasta +1 e o atribui ou grava num campo REFA. A questão é saber se antes de salvar em disco (BeforePost) há como Interceptar o Nº (ver imagem, pintado azul) de modo a garantir que o N.º do documento gravado em disco não é diferente do nome atribuído automáticamente ou ao menos atribuir um readonly a esse campo uma vez que o Nome é atribuído e enviado à interface pela macro? Obrigado

Se a macro esta somando +1 no ultimo arquivo gravado, não vejo necessidade de conferir se esta certo. Não entendi.

Se postar a MACRO, alguém poderá analisar se pode ocorrer erro.

Boa tarde/bom dia,
Sim a macro está somando; está tudo como pensado, e o user recebe o popup para gravar o “AAAA-1293 odt”, só que o user
continua a dispor da possibilidade de mudar o nome (NREFA) para algo diferente de “AAAA-1293 odt” e eu não posso permitir que o faça, sob pena de não ter a garantia de que o ODT escrito em disco corresponda exatamente à referência (REFA); digamos que preciso de algo muito semelhante à “integridade referencial”, e esta é a fase 1 do projeto.
Na fase 2, todos os dados, porque há mais(além da “REFA”: N/ data e hora, utilizador que criou e que editou, assunto, VREFA, VDT, etc… ) e por último uma barra de certificação electrónica a gravar no final depois do rodapé;
posto isto,os dados serão gravados numa base de dados Firebird (não o são de imediato porque o problemas de acesso ao FB ainda não consegui resolver, mas como funciona via ODBC, vou ver)!
Ainda tenho isso pendurado e estou a estudar como fazer essa gravação pois ela visa implementar um “Livro de Registo de Correspondência Recebida” electrónico.
Do que entendi, até agora, terei que fazer duas chamadas à API StoreDocument(oDoc, FilterNames, sFileNmDoc, sPath) p/ gravar em disco e uma outra StoreDocument(oDoc, FilterNames, sFileNmDoc, sPath, 1) para gravar na base de dados.
Todavia ainda não encontrei um exemplo que faça essa gravação dos campos de um formulário em um ODT numa base de dados! Conhece algum?
Daí que o user não deve poder mudar o nome aquando da gravação. E desde que ele possa mexer eu não tenho como garantir que esse é o nome do documento final e que corresponde mesmo àquela referência.
Pode ajudar? Obrigado
Atentamente

Gilberto Schiavinatto via Ask LibreOffice <noreply@ask.libreoffice.org> escreveu no dia quinta, 22/09/2022 à(s) 03:36:

1 Like

Terei o maior gosto postar, não só a macro como a ideia (de simular um escritório eletrónico , amador(!) mas p/f deixe-me lantes impar o código (sou principiante em basic)!
Atentamente

Gilberto Schiavinatto via Ask LibreOffice <noreply@ask.libreoffice.org> escreveu no dia quinta, 22/09/2022 à(s) 03:36:

1 Like