2013-06-10 20:29:02 +0000 2013-06-10 20:29:02 +0000
14
14

Como se insere o nome do ficheiro actual no Excel?

Estou a tentar ver o nome do ficheiro em que estou a trabalhar na folha de cálculo Excel de interesse, utilizando uma fórmula. Por exemplo, se o ficheiro se chamasse workbook1.xlsx, então eu gostaria que a célula A1 mostrasse “workbook1.xlsx”

A fórmula que o site de ajuda da Microsoft dá não funciona http://office.microsoft. com/en-us/excel-help/insert-the-current-excel-file-name-path-ou-worksheet-in-a-cell-HA010103010. aspx#BMinsert3

=MID(CELL(“filename”),SEARCH(“[”,CELL(“filename”))+1, SEARCH(“]”,CELL(“filename”))-SEARCH(“[”,CELL(“filename”))-1)

Respostas (6)

14
14
14
2013-06-10 20:42:32 +0000

Funciona aqui, acabei de testar em Excel 2007 (XP) e Excel 2013 (Windows 8).

Tente =CELL("filename") sozinho primeiro para ajudar a resolver problemas.

& - Certifique-se de que guardou a sua pasta de trabalho no disco. Não mostrará “Livro1” se colocar a fórmula numa nova pasta de trabalho não guardada.

& - Está a utilizar definições regionais não inglesas no seu computador? Algumas línguas exigem o ajuste dos nomes das funções e da sintaxe da fórmula (em francês, por exemplo, as vírgulas devem ser substituídas por ponto e vírgula).

  • Está no seu computador pessoal ou num computador de trabalho? Se for um computador de trabalho, talvez possa haver limitações aos direitos do utilizador que causem problemas.

Quando diz “não funciona”, pode ser mais específico? Será que aceita a fórmula como dactilografada? A célula está vazia, mostrando “#VALUE!”, etc? O que acontece quando se usa apenas =CELL("filename")?

9
9
9
2013-06-10 23:35:14 +0000

Note que =CELL("filename") dá-lhe o caminho para o last workbook/worksheet changed* pelo que se tiver 2 workbooks abertos, abc e xyz e a sua fórmula estiver em abc, se mudou pela última vez um valor em xyz a fórmula em abc irá reflectir isso e devolver xyz.xlsx

Por essa razão é normalmente preferível incluir uma referência de célula (qualquer referência de célula), e. g.

=CELL(“filename”, A1 )

Usando essa versão significa que só receberá o nome da pasta de trabalho em que reside a fórmula.

Pode utilizar esta versão ligeiramente mais curta

=REPLACE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),1,FIND("[",CELL("filename",A1)),"")

2
2
2
2017-06-29 16:48:47 +0000

Descobri que esta é a fórmula “mais simples” para devolver o filename apenas:

=REPLACE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),1,FIND("[",CELL("filename",A1)),"")

or - created in VBA:

Formula = "=REPLACE(LEFT(CELL(""filename"",A1),FIND(""]"",CELL(""filename"",A1))-1),1,FIND(""["",CELL(""filename"",A1)),"""")"

Para devolver o full path, isto serve:

=SUBSTITUTE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),"[","")

or - created in VBA:

Formula = "=SUBSTITUTE(LEFT(CELL(""filename"",A1),FIND(""]"",CELL(""filename"",A1))-1),""["","""")"

0x1&

1
1
1
2015-08-28 14:34:41 +0000

Se usar excel em holandês, deve usar os nomes das funções holandesas e usar ponto e vírgula em vez de vírgula:

=VERVANGEN(LINKS(CEL("filename");VIND.SPEC("]";CEL("filename"))-1);1;VIND.SPEC("[";CEL("filename"));"")

1
1
1
2015-01-09 16:11:13 +0000

Eu tinha o mesmo problema (a fórmula colada não funcionava)! Assim que substituí o , por ; na fórmula, funcionou perfeitamente.

=MID(CELL(“filename”);SEARCH(“[”;CELL(“filename”))+1; SEARCH(“]”;CELL(“filename”))-SEARCH(“[”;CELL(“filename”))-1)

1
1
1
2015-01-15 10:41:26 +0000

Uma solução mais simples é esta:

No seu ficheiro Excel prima Alt+F11, que abre o Microsoft Visual Basics for Applications (VBA). Em VBA seleccione Insert > Module e cole o seguinte código

Public Function GetMyProp(prop As String) As String
    GetMyProp = ThisWorkbook.BuiltinDocumentProperties(prop)
End Function

Na sua fórmula de tipo de ficheiro Excel: =GetMyProp("Title"). Isto mostrará o título do seu documento na célula escolhida.