Notifications
Clear all

Nome do arquivo em uma célula

11 Posts
3 Usuários
0 Reactions
6,950 Visualizações
(@jalexm)
Posts: 77
Estimable Member
Topic starter
 

Olá.

Não sei se precisa de uma macro para isso, mas existe uma maneira de mostrar em uma célula o nome do arquivo em que está a planilha sem a extensão?
Por exemplo, se o arquivo em que está a planilha chama-se "Despesas.xlsx", então em A1 apareceria "Despesas".
Como fazer isso?

Obrigado.

 
Postado : 03/10/2013 7:51 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

jalexm,

Bom Dia!

Utilize a função abaixo e você poderá ter o nome dos seus arquivos, sem a extensão, em qualquer célula que você quiser. Como se trata de uma função definida pelo usuário (UDF) você precisa ir até o editor do VBA (ALT+F11) e inserir um módulo. Depois cole o código abaixo nesse módulo. Salve tudo e fecha a janela do editor do VBA. Finalmente, no Excel, após selecionar a caixa de funções, selecione a Categoria Definida pelo usuário e escolha a função recém criada (NomeArquivo). Pronto! Aparecerá na célula o nome do seu arquivo.

Function NomeArquivo() As String
    Dim Extensão As String
    Dim posição As Integer
    posição = InStr(1, ActiveWorkbook.Name, ".", vbTextCompare)
    Extensão = Mid(ActiveWorkbook.Name, posição + 1, Len(ActiveWorkbook.Name) - posição)
    If Len(Extensão) = 3 Then
        NomeArquivo = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
    Else
        NomeArquivo = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
    End If
End Function
 
Postado : 03/10/2013 8:36 am
(@jalexm)
Posts: 77
Estimable Member
Topic starter
 

Aparecerá na célula o nome do seu arquivo.

Funcionou perfeitamente, meu amigo!
Sem querer abusar, como fazer essa função executar sempre que a planilha for aberta e colocar o nome do arquivo na célula A1?

Agradeço mais essa.

 
Postado : 03/10/2013 12:21 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

jakexm,

Aí você não precisará de função. Basta colocar no evento Workbook_Open da pasta de trabalho o código abaixo:

Private Sub Workbook_Open()
    Dim Extensão As String
    Dim posição As Integer
    posição = InStr(1, ActiveWorkbook.Name, ".", vbTextCompare)
    Extensão = Mid(ActiveWorkbook.Name, posição + 1, Len(ActiveWorkbook.Name) - posição)
    If Len(Extensão) = 3 Then
        Range("A1").Value = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
    Else
        Range("A1").Value = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
    End If
End Sub
 
Postado : 03/10/2013 1:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sem VBA:
=EXT.TEXTO(CÉL("nome.arquivo";A1);LOCALIZAR("[";CÉL("nome.arquivo";A1))+1;LOCALIZAR(".xls";CÉL("nome.arquivo";A1))-LOCALIZAR("[";CÉL("nome.arquivo";A1))-1)

[] Doni

 
Postado : 03/10/2013 1:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Via fórmula (em qualquer célula):

=EXT.TEXTO(CÉL("nome.arquivo");LOCALIZAR("[";CÉL("nome.arquivo");1)+1;(LOCALIZAR("]";CÉL("nome.arquivo");1))-(LOCALIZAR("[";CÉL("nome.arquivo");1)+1))

Abs,

 
Postado : 03/10/2013 2:40 pm
(@jalexm)
Posts: 77
Estimable Member
Topic starter
 

Aí você não precisará de função. Basta colocar no evento Workbook_Open da pasta de trabalho o código abaixo

Funcionou perfeitamente.
Obrigado, amigo.

 
Postado : 03/10/2013 2:50 pm
(@jalexm)
Posts: 77
Estimable Member
Topic starter
 

Via fórmula (em qualquer célula):
=EXT.TEXTO(CÉL("nome.arquivo");LOCALIZAR("[";CÉL("nome.arquivo");1)+1;(LOCALIZAR("]";CÉL("nome.arquivo");1))-(LOCALIZAR("[";CÉL("nome.arquivo");1)+1))
Abs,

Solução bem curiosa, amigo.
Vou testar também. Obrigado.

 
Postado : 03/10/2013 2:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Da maneira que o Mandrix colocou, a fórmula mostra a extensão do arquivo.

Doni

 
Postado : 03/10/2013 3:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Doni,

Troque o "]" por "." na fórmula e vc tem o que vc quer.

Abs,

 
Postado : 03/10/2013 5:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mandrix!
Vc tem razão basta trocar os sinais, e ainda a sua fórmula fica um pouco menor que a minha, ou seja, mais fácil pra digitar, valeu aprendi mais uma!

Doni

 
Postado : 03/10/2013 7:16 pm