Preciso salvar um arquivo com alguns espaços aleatórios no nome.
Está no Excel Vba. Tudo o que encontrei após uma hora de pesquisa na rede são sugestões para substituir o espaço por% 20 ou evitar espaços no nome do arquivo. Tentei brincar de adicionar aspas ou colocar% 20 sem sorte.
O arquivo produzido é para exportar para um sistema legado, alterar os nomes ou substituir o espaço por outro caractere não é uma opção .
Além disso, os espaços não estão necessariamente no mesmo local e eu gostaria de evitar colocar uma declaração Case para 20 nomes diferentes.
Aqui está o código que me causa problemas.
Savepath=range("a1").value
NameOfFile=range("a2").value
FullnameSave=savepath & "\"& NameOfFile & ".xlsm"
ActiveWorkbook.SaveAs Filename:=FullNameSave, FileFormat:=xlOpenXMLWorkbookMacroEnabled
Tudo funciona bem, exceto quando há um espaço em algum lugar no FileName.
Por exemplo, se o valor em A2 for StandardPrice, o arquivo será salvo corretamente, se for o preço padrão , recebo um erro (erro 1004 no método SaveAs). Além disso, se eu codificar o nome da seguinte forma, ele funcionará.
FullnameSave=savepath & "\" & "standard price" & ".xlsm"
Tentei adicionar 2,3,4 e até 5 aspas ao nome do arquivo, mas ele nunca retorna o formato correto (que seria algo como H: \ Pip_Import \ ImportTests2016-10 \ "standard price"
Respostas:
Se você estiver salvando em alguma pasta local, não deverá haver problemas. Eu peguei seu código:
com isso na planilha:
Observe o espaço no nome do arquivo. Seu código foi executado sem erros e produziu:
Não tentei salvar em um local de rede.
fonte
No final, não tinha nada a ver com os espaços no nome do arquivo. Reescrever o código para se ajustar ao formato de SU e ver que ele funcionava no computador de outra pessoa me fez voltar ao código original com um olhar diferente.
Havia um único espaço após a barra invertida "\" na
O que me impressionou é que esse erro de digitação é ignorado / corrigido automaticamente se o nome do arquivo não contiver nenhum espaço em branco, mas gerar um erro se houver um.
Portanto, a solução foi simplesmente reescrever a parte problemática do código do zero e procurar erros de digitação.
Não tenho certeza se esse tipo de solução se encaixa na SU, mas funcionou para esse problema específico ...
fonte