Ir ao conteúdo

Posts recomendados

Postado

Pessoal, bom dia!

 

É minha primeira vez aqui no fórum, e eu gostaria de saber como pegar o nome de um arquivo já existente e salvar com um nome reduzido (no meu caso, o nome do arquivo que vem do sistema é no seguinte padrão:

 

"ResumoVendas_GR000_Bonif_012018_Resumido"

o "GR000 é uma variável, existem diversos Códigos diferentes, assim como esse bonificação, que pode ser PBM, OFL, CondCom, Conec, etc, e a data também  varia dependendo do mês que eu extraio o relatório ( posso extrair um relatório de 2005 por exemplo)

 

Eu precisava deixar esse nome de relatório da seguinte maneira:

"GR000_Bonif_012018"

 

mas como as informações são variáveis, eu não sei como fazer. já fiz algumas macros pra abrir e salvar com um nome específico, até com valor de variável, mas não sei se existe algum método ou função que faça isso, ou como separar essas 3 variáveis da string.  Tentei fazer de outras formas, mas não exitem células na planilha com essas informações.

 

Extraio do sistema cerca de 1300, 1400 relatórios por mês, e não quero ter que alterar o nome disso tudo na mão.

Se alguém souber de alguma coisa, ficarei muito grato pela ajuda.

Postado

Veja se ajuda

 

    Dim a         As String
    Dim i         As Long
    Dim num       As Single
    Dim divList() As String
    Dim nomRelat  As String
    
    divList = VBA.Split("ResumoVendas_GR000_Bonif_012018_Resumido", "_")
    
    For i = 1 To UBound(divList, 1) - 1
        a = divList(i)
        
        num = num + VBA.Len(a)
        nomRelat = nomRelat & a & "_"
    Next i
    
    divList = VBA.Split(nomRelat, "_")
    num = num + (UBound(divList, 1) - 1)
    
    MsgBox VBA.Trim(VBA.Left(nomRelat, num))

 

  • Curtir 1
Postado

Caraca, excelente código, não conhecia esses métodos... muito bom! me ajudou demais.

 

Mas a ultima linha tá dando erro de compilação, fala que a sintaxe está incorreta. Meu Excel é o 2010, será que é algo relacionado?

 

Ah, mais uma coisa: depois de todo o processo para juntar o nome,  dá pra eu salvar esse novo nome gerado em uma variável?

 

porque eu tenho uma sub pra salvar o relatório, e iria colocar pra salvar com esse nome gerado.

 

Desde já agradeço por ter respondido.

 

 

 

  • Curtir 1
Postado

Estou utilizando o office 2010 32 bits, pra mim não apareceu erros.

 

De qualquer forma experimente desta forma, alterei a declaracao da variavel divlist para variant

 

E o nome gerado esta na variavel nomRelat

 

    Dim a         As String
    Dim i         As Long
    Dim num       As Single
    Dim divList   As Variant
    Dim nomRelat  As String
    
    divList = VBA.Split("ResumoVendas_GR000_Bonif_012018_Resumido", "_")
    
    For i = 1 To UBound(divList, 1) - 1
        a = divList(i)
        
        num = num + VBA.Len(a)
        nomRelat = nomRelat & a & "_"
    Next i
    
    divList = VBA.Split(nomRelat, "_")
    num = num + (UBound(divList, 1) - 1)
    
    nomRelat = VBA.Trim(VBA.Left(nomRelat, num))
    
    MsgBox nomRelat

 

  • Obrigado 1
Postado

Eita... eu consegui verificar o código seu só agora, e tem um problema.. rsrs

 

Neste exemplo o nome do arquivo fica sempre como "GR000_Bonif_012018" , mas eu preciso que esse nome varie conforme o arquivo aberto. o GR varia de 000 até 999, existem outros tipos de venda com uma quantidade maior de caracteres e tudo mais, além da data variar também. Como pegar o VBA.Split por exemplo e fazer ele pegar o nome do arquivo aberto na hora da execução da macro?

 

O nome de um arquivo pode ser o seguinte:

 

"GR002_CondCom_032018", ou ainda:

"GR752_PBM_122015"

 

Obrigado novamente.

  • Solução
Postado

@Luis Carlos Zambo voce não especificou que tipo de arquivo e se o nome do arquivo é da própria planilha.

 

Se for for um arquivo Excel e se for na própria Pasta de trabalho, experimente assim

 

  divList = VBA.Split(ThisWorkbook.Name, "_")

 

  • Curtir 1
Postado
6 minutos atrás, Basole disse:

@Luis Carlos Zambo voce não especificou que tipo de arquivo e se o nome do arquivo é da própria planilha.

 

Se for for um arquivo Excel e se for na própria Pasta de trabalho, experimente assim

 


  divList = VBA.Split(ThisWorkbook.Name, "_")

 

Poxa, perdão, peço desculpas. Eu estava tentando colocar o ActiveWorkbook.Name mas não estava dando certo. Agora compilou pelo menos.  O resto do código não muda,certo?

Postado

Cara, muito obrigado novamente pela paciência e tempo dedicado. Estou aprendendo ainda a fazer macros. Sei o básico de lógica de programação e pouco sobre métodos e funções do Excel, mas estou aprendendo aos poucos.

 

Você me ajudou demais!

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!