1

Мне нужно сохранить файл с несколькими случайными пробелами в имени.

Это в Excel VBA. Все, что я обнаружил после одного часа поиска в сети, - это предложения заменить пробел на% 20 или избежать пробелов в имени файла. Я пытался играть с добавлением кавычек или ставкой% 20 без удачи.

Созданный файл предназначен для экспорта в унаследованную систему, поэтому изменение имен или замена пробела другим символом невозможна.

Кроме того, пробелы не обязательно должны быть в одном и том же месте, и я бы хотел не использовать оператор Case для 20 разных имен.

Вот фрагмент кода, который доставляет мне неприятности.

Savepath=range("a1").value
NameOfFile=range("a2").value 
FullnameSave=savepath & "\"& NameOfFile & ".xlsm" 

ActiveWorkbook.SaveAs Filename:=FullNameSave, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Все отлично работает, за исключением случаев, когда где-то в FileName есть место.

Например, если значение в A2 равно StandardPrice, файл сохраняется нормально, если это стандартная цена, я получаю ошибку (ошибка 1004 в методе SaveAs). Кроме того, если я жестко запишу имя следующим образом, это сработает.

FullnameSave=savepath & "\" & "standard price" & ".xlsm" 

Я попытался добавить 2,3,4 и 5 кавычек вокруг имени файла, но он никогда не возвращает правильный формат (который будет выглядеть примерно так : H:\Pip_Import\ImportTests2016-10\"стандартная цена")

2 ответа2

2

Если вы сохраняете в какую-то локальную папку, проблем не должно быть. Я взял твой код:

Sub SaveMePlease()
    savepath = Range("a1").Value
    Filename = Range("a2").Value
    FullNameSave = savepath & "\" & Filename & ".xlsm"
    ActiveWorkbook.SaveAs Filename:=FullNameSave, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

с этим в листе:

Обратите внимание на пробел в имени файла. Ваш код работает без ошибок и выдает:

Я не пробовал сохранять в сетевом расположении.

0

В конце концов это не имело ничего общего с пробелами в имени файла. Переписав код в соответствии с форматом SU и увидев, что он работает на чужом компьютере, я заставил меня вернуться к исходному коду другим взглядом.

После обратной косой черты в «\»

FullnameSave=savepath & "\ " & NameOfFile & ".xlsm" 

Что сбило меня с толку, так это то, что эта опечатка автоматически игнорируется / исправляется, если имя файла не содержит пробелов, но выдает ошибку, если она есть.

Поэтому решение было просто переписать проблемную часть кода с нуля и искать опечатки.

Я не уверен, что такое решение подходит SU, но оно сработало для этой конкретной проблемы ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .