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.
Extrair nome do ficheiro sem 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).

Obter o nome do ficheiro numa célula

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.

Nome e caminho do ficheiro

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 "["

Parêntesis recto inicial
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 "]"

Parêntesis recto final
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.

Função seg.texto (mid)

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
Fórmula final

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