Ir ao conteúdo
  • Cadastre-se
RuteFe

Excel Eliminar Worksheets utilizando a Função Vlookup

Recommended Posts

Bom dia Osvaldo,

 

7 horas atrás, osvaldomp disse:

Veja se estão corretos os dois exemplos abaixo.

 

nome atual e novo nome do primeiro ficheiro a ser buscado:

fórmula para obter o nome atual ~~~> =H5&"\"&D5

nome atual resultante da fórmula acima ~~~> X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163

fórmula para formar o novo nome ~~~> =H5&"\"&K5

novo nome resultante da fórmula acima ~~~> X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163_relatório de obra_Ago2018

 

nome atual e novo nome do segundo ficheiro a ser buscado:

fórmula para obter o nome atual ~~~> =H6&"\"&D6

nome atual resultante da fórmula acima~~~> X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1164

fórmula para formar o novo nome ~~~> =H6&"\"&K6

novo nome resultante da fórmula acima ~~~> X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1164_relatório de obra_Ago2018

 

Os exemplos estão corretos.

 

É mesmo isso que eu pretendo.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimente:

Sub RenomeiaFicheiros()
 Dim OldFile As String, NewFile As String, c As Range
  For Each c In Range("H5:H" & Cells(Rows.Count, 8).End(3).Row)
   OldFile = c.Text & "\" & c.Offset(, -4).Text & ".xlsm"
    If Dir(OldFile) <> "" Then
     NewFile = c.Text & "\" & c.Offset(, 3).Text & ".xlsm"
     Name OldFile As NewFile
     c.Offset(, 4).Value = NewFile
    Else
     c.Offset(, 4).Value = "FICHEIRO NÃO ENCONTRADO"
    End If
  Next c
End Sub

obs.

1. faça os testes em uma cópia da pasta com os ficheiros; exemplo: copie para um pendrive a pasta original; se o pendrive for drive D:\ então substitua o X: pelo D: ~~~> selecione a coluna H / aperte Ctrl+L / Localizar: X: / Substitui: D: / Substituir tudo

2. após renomear, o novo nome será colocado na coluna L

3. considerei que todos os ficheiros têm extensão ".xlsm"

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @osvaldomp

 

Já testei o exemplo que me deu.

1. A primeira vez que testei deu na coluna L - FICHEIRO NÃO ENCONTRADO

2. Analisei o código da MACRO

3. A macro procura este ficheiro

Em 17/09/2018 às 09:17, RuteFe disse:

X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163

4. O problema é que este ficheiro chama-se X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163_relatório de obra_nº4_Ago2018_BB

5. Ele não está a conseguir só buscar o nome CAOB1163

 

 

Fiz o teste colocando no nome do ficheiro unicamente CAOB/1163

A macro corre e coloca o novo nome no ficheiro.

 

 

A minha questão é como se põe a macro a ler no nome do ficheiro unicamente CAOB/1163

 

 

Obrigada Osvaldo.

adicionado 17 minutos depois

Bom dia @osvaldomp

 

Estes são os nomes antigos que estão na pasta

image.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está difícil de chegar a um acordo :tw_smirk:

 

No post #26 eu coloquei o exemplo abaixo de nome de arquivo a ser procurado

X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163

Então você respondeu ~~~> Os exemplos estão corretos. É mesmo isso que eu pretendo.

 

E agora você informa que o nome é

X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163_relatório de obra_nº4_Ago2018_BB :tw_tired:


A minha questão é como se põe a macro a ler no nome do ficheiro unicamente CAOB/1163 <~~~ essa barra que destaquei em vermelho também é novidade :o

 

Faça testes com o código abaixo. A busca será feita com base nos dados da coluna D.

Coloquei um apóstrofo inicial na linha que renomeia, portanto os arquivos (se encontrados) não serão renomeados, só será lançado o novo nome na coluna L. Verifique se o novo nome está correto. Caso não seja encontrado será notificado também na coluna L.

 

Se estiver tudo correto (o que é improvável ... :blush:), então remova o apóstrofo para ativar o comando que renomeia.

 

Sub RenomeiaFicheirosV2()
 Dim OldFile As String, NewFile As String, c As Range
  For Each c In Range("D5:D" & Cells(Rows.Count, 4).End(3).Row)
   OldFile = "X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\" & "*" & c.Text & "*" & ".xlsm"
   NewFile = "X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\" & c.Text & ".xlsm"
    If Dir(OldFile) <> "" Then
     'Name OldFile As NewFile
     c.Offset(, 8).Value = NewFile
    Else
     c.Offset(, 8).Value = "FICHEIRO NÃO ENCONTRADO"
    End If
  Next c
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Osvaldo,

 

Eu já tinha colocado essa questão no Post #22

8 horas atrás, osvaldomp disse:

E agora você informa que o nome é

X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163_relatório de obra_nº4_Ago2018_BB :tw_tired:

Como não disse nada em contrário pensei que fosse possível a busca e aí os exemplos que destes estarem corretos.

 

8 horas atrás, osvaldomp disse:

A minha questão é como se põe a macro a ler no nome do ficheiro unicamente CAOB/1163 <~~~ essa barra que destaquei em vermelho também é novidade :o

 

A barra vermelha foi colocada sem intenção, é a forma como eu escreve esses códigos, mas que não é usado aqui na macro.

 

 

Vou testar e te dou o feedback.

Obrigada mais uma vez.

 

 

Cumprimentos,

 

Rute Ferreira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Osvaldo,

 

Eu já tinha colocado essa questão no Post #22

8 horas atrás, osvaldomp disse:

E agora você informa que o nome é

X:\Controlo Custos\RELATÓRIOS_OBRAS\Relatório de obra_Ago2018\CAOB1163_relatório de obra_nº4_Ago2018_BB :tw_tired:

Como não disse nada em contrário pensei que fosse possível a busca e aí os exemplos que destes estarem corretos.

 

8 horas atrás, osvaldomp disse:

A minha questão é como se põe a macro a ler no nome do ficheiro unicamente CAOB/1163 <~~~ essa barra que destaquei em vermelho também é novidade :o

 

A barra vermelha foi colocada sem intenção, é a forma como eu escreve esses códigos, mas que não é usado aqui na macro.

 

 

Vou testar e te dou o feedback.

Obrigada mais uma vez.

 

 

Cumprimentos,

 

Rute Ferreira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×