Notifications
Clear all

Nome Caracteres Inválidos

9 Posts
1 Usuários
0 Reactions
2,301 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde, Senhores,

Estou com um problema.

Criei um macro para salvar arquivos automaticamente quando clico em determinado botão.
Porém, os arquivos são salvos com base no valor de determinada célula.

Resultado:
Quando o valor da célula é “TESTE/EXPORTAR.txt” o macro dá erro, pois o Windows não aceita o formato “/” no nome de um arquivo.

Solução:
Gostaria de saber como faço para que com o Excel detectar caracteres inválidos no nome do arquivo na hora de salvar, ele substitua o “/” por “-“, não na célula, mas no nome do arquivo.

Ficando assim:
Se “TESTE/EXPORTAR.txt”
Ficará “TESTE-EXPORTAR.txt”

Isso não é para somente esse modelo de nome, existem outros diferentes nomes além desse.

Agradeço

 
Postado : 11/07/2011 8:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá, post um modelo ou pelo menos o codigo pra facilitar a compreenção.

 
Postado : 11/07/2011 9:12 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

=SE(PROCURAR("/";A1);MUDAR(A1;PROCURAR("/";A1);1;"-");A1)

Aff, agora que vi direito e vi que é no nome do arquivo.

:/

 
Postado : 11/07/2011 9:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Boa a linha sugerida pelo Sparcools, mas como opção diretamente no código, claro que, encaixando nos passos adequados da Macro:

Sub NomeArquivo()

arquivo = Range("A1")
On Error GoTo ErroNome
n = Application.WorksheetFunction.Search("/", arquivo, 1)
narquivo = Application.WorksheetFunction.Replace(Arg1:=arquivo, Arg2:=6, Arg3:=1, Arg4:="-")
Exit Sub

ErroNome:
narquivo = arquivo

Exit Sub

End Sub

 
Postado : 11/07/2011 9:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado pela atenção e pela agilidade no processo, pessoal.

Edson, utilizei seu conceito, porém ele só substitui a 6ª letra do nome do arquivo por "-". Caso o nome do arquivo não seja "TESTE/EXP.xls", mas sim, "TESTANDO/EXP.xls" ele ficaria assim "TESTA-DO/EXP.xls".

 
Postado : 11/07/2011 2:09 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Uma outra sugestão :

Sub SeparaNomeArquivo()
    Dim x As Variant
    Dim i As Long
    
    arquivo = Range("A1")
    sTrim = Application.Trim(arquivo)
    
    x = Split(arquivo, "/")
    stWord = x(0)
    n = stWord
    
    For i = 1 To UBound(x)
            stWord = x(i)
          n1 = stWord
    Next i
 
    narquivo = n & "-" & n1
    MsgBox narquivo
    
End Sub

[]s

 
Postado : 11/07/2011 4:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tempo curto para Edição de msg.

Então segue uma sugestão na Rotina do Edson

Sub NomeArquivo()
arquivo = Range("A1")

On Error GoTo ErroNome

n = Application.WorksheetFunction.Search("/", arquivo, 1)
        narquivo = Replace(arquivo, "/", "-")
        MsgBox narquivo
    Exit Sub

ErroNome:
    narquivo = arquivo
    MsgBox narquivo
Exit Sub

End Sub

[]s

 
Postado : 11/07/2011 4:42 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Boa Mauro...!

lokaumz, Mauro e demais...

Utilizei a variável n para determinar qual a ordem do caracter inválido e depois não utilizei no Replace...!! hehehe

Viajei... :oops:

 
Postado : 11/07/2011 6:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

É um grande prazer agredecer pela ajuda..
Espero também poder contribuir um dia como vocês...

Um grande abraço pessoal.

 
Postado : 12/07/2011 6:17 am