Fórmula para extrair o nome do ficheiro sem VBA
Como colocar o nome do ficheiro numa célula através de fórmulas sem usar VBA.
Resumo
Neste artigo mostramos como colocar o nome do ficheiro numa célula com fórmulas e sem usar VBA recorrendo às Funções SEG.TEXTO (Mid) e LOCALIZAR (Find).Sintaxe
=SEG.TEXTO(CÉL("filename";A1);LOCALIZAR("[";CÉL("filename";A1))+1;LOCALIZAR("]"; CÉL("filename";A1))-LOCALIZAR("[";CÉL("filename";A1))-1)
Vamos explicar a fórmula passo a passo:1. Identificar o nome e o caminho do ficheiro (workbook) aberto
2. Localizar os parêntesis rectos "[" e "]"
3. Extrair o texto entre estes 2 elementos.
1. Nome e caminho do ficheiro
CÉL("filename";A1)
CÉL("filename";A1) // para chamarmos o nome e o caminho do ficheiro. A utilização da célula "A1" é arbitrária e a fórmula funciona com qualquer célula.A utilização de "filename" pode ser diferente dependendo do idioma do sistema e do excel em que estamos a trabalhar. Se não funcionar tenta com "nome.ficheiro".
2. Localizar os parêntesis rectos
Com a primeira parte da fórmula encontramos o caminho e o nome do ficheiro. Percebemos que o nome do ficheiro está entre parêntesis rectos, o que significa que sabemos que o que estamos a tentar isolar está entre "[" e "]".C:\Exceltuga[035 Nome e caminho do Workbook - ExcelTuga.xlsx]Folha1
Localizar a abertura de parentêsis rectos "["LOCALIZAR("[";CÉL("filename";A1))+1
LOCALIZAR("[";CÉL("filename";A1)) // o resultado é 14. Ou seja, o "[" é o 14º caracter.+1 // Mas como não queremos inclui-lo somamos +1. Assim, já sabemos que é no caracter 15 que começa o nome do ficheiro.
Repetimos o mesmo processo para encontrar o fecho dos parêntesis rectos "]"
LOCALIZAR("]"; CÉL("filename";A1))-1
LOCALIZAR("]"; CÉL("filename";A1)) // o resultado é 62. Ou seja, o "]" é o 62º caracter.-1 // Também não o queremos incluir, pelo que subtraímos -1. Passamos também a saber que é no caracter 61 que acaba o nome do ficheiro.
3. Extrair o nome do ficheiro (sem parêntesis)
Já sabemos onde começa e onde acaba o nome do ficheiro e vamos usar a Função SEG.TEXTO (Mid) para o fazer. Sabemos que queremos começar no 15º caracter e terminar no 61º. Mas a síntaxe desta função coloca-nos um último entrave.A Função reconhece o núm_inicial mas não reconhece o número final mas sim o núm_caract, ou seja o número de caracteres que queremos incluir a partir do inicial. Para o fazer, pegamos nas 2 parcelas da fórmula que já dissecámos e acrescentamos um cálculo em que subtraímos a localização de "[" à localização de "]"
LOCALIZAR("[";CÉL("filename";A1))+1;LOCALIZAR("]"; CÉL("filename";A1))-LOCALIZAR("[";CÉL("filename";A1))-1)
15;LOCALIZAR("]"; CÉL("filename";A1))-15)
15;62-15)
15;47
No final se olharmos para a fórmula completamente dissecada conseguimos visualizar todos os seus elementos desde o caminho e nome do ficheiro até ao resultado final em que extraímos os 47 carateres que correspondem ao nome do ficheiro.
=SEG.TEXTO(C:\Exceltuga[035 Nome e caminho do Workbook - ExcelTuga.xlsx]Folha1);15;47)
E desta forma conseguimos isolar e extrair o nome do ficheiro.
Descargas
Descarrega aqui o ficheiro com os exemplos para extrair o nome do ficheiro sem VBA