Nesse, definitivamente preciso de ajuda. Eu trabalho com registro imobiliário.
Todo mês subsequente a transação de um imóvel, eu tenho que efetuar comunicação ao Município para fins de alteração de propriedade no IPTU.
Tenho duas bases de dados geradas em arquivo CSV, uma com informações das pessoasque participaram da transação, e uma com os imóves.
Eu tenho tentado desenvolver uma macro para automatizar todo o processo de formatação e transformação em um relatório único, no calc, para efetuar a comunicação.
Inclusive, pedi ajuda aqui algumas vezes exatamente para me auxiliar no desenvolvimento disso.
Consegui criar algo funcional para a base de dados referente ao imóvel, mas preciso criar algo para a base de dados referente as pessoas, e estou tendo dificuldades pois é uma arquivo muito “bagunçado”.
O que preciso exatamente?
- Na base de dados de pessoas, necessito criar um mecanismo que busque exatamente o endereço da pessoa, com base no seu nome, por exemplo, e extraia essa informação para uma outra tabela ou planilha; ou
1.1 Criar um mecanismo que busque o endereço e extraia essa informação para um outro local. - No arquivo exemplo, existem marcadores para facilitar esta leitura, que são: a palavra ‘Residência’ e o caractere :(dois pontos).
Tive algumas ideias para fazer isso que ajudaram até eu empacar. Por exemplo, eu abro o arquivo CSV no calc usando uma macro com filtros determinados, e faço uma busca por informações que não preciso, excluindo as linhas onde se encontram, para diminuir minha base de dados.
Depois eu tive uma ideia para tentar limpar mais a base de dados e extrair as informações que eu preciso, copiando as informações já filtradas pela macro anterior e extrai-las para um clipboard ou um arquivo writer a fim de tentar pegar só o que preciso.
Foi exatamente onde empaquei porque ainda estou aprendendo a utilizar alguns comandos como o IF…End If por exemplo.
Meu objetivo, para esclarecer:
- Abrir o arquivo Csv e limpar as informações desnecessárias
- Copiar as informações semi-filtradas para um clipboard ou documento de texto para copiar apenas as informações que preciso (endereço), com base em dois critérios (palavra residencia, caractere dois pontos)
- Colar as informações copiadas no relatório organizado para receber essas informações
Obs.: Ao baixar os arquivos abaixo, para que abram corretamente é necessário trocar a extensão dos mesmos para .CSV, exceto o Relatorio
Arquivos exemplos:
Imovel:
DADOSMATRICULAexemplo.ods (41,7,KB)
Pessoas:
exemploCalc.ods (1,8,KB)
ExemploWriter.odt (17,2,KB)
Relatorio, onde está macro principal (não mudar extensão deste):
RelatorioExemplo.ods (26,6,KB)
Complemento:
Lendo posts em inglês entendi um pouco a incoerência do meu pedido. Se eu conseguir fazer o que descrevi acima usando apenas o calc, seria excelente.
Acontece que a ideia me veio por não conseguir usar direito o comando
.executeDispatch ( oFrame, “uno:SetInputMode”, “”, 0, Args() )
Para copiar a informação que necessito e transferir para outra célula.
Edit para conhecimento
Aprendi uma Função que faz exatamente o que precisava, de maneira mais simples.
Na solução apresentada, a qual me atendeu, foram aninhadas três funções do Calc:
DIREITA(NÚM.CARACT(intervalo)-LOCALIZAR(“Residência”;intervalo)-11)
In English:
RIGHT(LEN(Range)-SEARCH(“Residência”;Range)-11)
Porém, posso fazer o mesmo em apenas um Função, que utiliza expressões regulares:
EXPREG(intervalo;".*Residência: "; “”)
In English:
REGEX(Range;".*Residência: “;”")
Onde estudar:
https://helponline.libreoffice.org/latest/pt-BR/text/scalc/01/func_regex.html?DbPAR=CALC#bm_id831542233029549