我需要保存一个名称中带有一些随机空格的文件。
它位于 Excel Vba 中。经过一个小时的网络搜索,我发现的建议都是要么用 %20 替换空格,要么避免在文件名中使用空格。我尝试添加引号或输入 %20,但没有成功。
生成的文件用于导出到旧系统,更改名称或用另一个字符替换空格不是一种选择。
而且空格不一定在同一个位置,我想避免为 20 个不同的名称放置一个 Case 语句。
这是给我带来麻烦的一段代码。
Savepath=range("a1").value
NameOfFile=range("a2").value
FullnameSave=savepath & "\"& NameOfFile & ".xlsm"
ActiveWorkbook.SaveAs Filename:=FullNameSave, FileFormat:=xlOpenXMLWorkbookMacroEnabled
除 FileName 中的某处有空格外,一切正常。
例如,如果 A2 中的值为标准价格文件保存良好,如果它是标准价格我收到错误(SaveAs 方法上的错误 1004)。同样,如果我按如下方式对名称进行硬编码,它就可以正常工作。
FullnameSave=savepath & "\" & "standard price" & ".xlsm"
我尝试在文件名周围添加 2、3、4 甚至 5 个引号,但它始终无法返回正确的格式(类似于H:\Pip_Import\ImportTests2016-10\“标准价格”
答案1
如果您要保存到某个本地文件夹,则应该没有问题。我采用了您的代码:
Sub SaveMePlease()
savepath = Range("a1").Value
Filename = Range("a2").Value
FullNameSave = savepath & "\" & Filename & ".xlsm"
ActiveWorkbook.SaveAs Filename:=FullNameSave, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
工作表中的内容如下:
请注意文件名中的空格。您的代码运行时没有错误,并生成:
我尚未尝试保存到网络位置。
答案2
最终发现与文件名中的空格无关。重写代码以适应 SU 的格式,并看到它可以在别人的计算机上运行,这让我以不同的眼光重新审视原始代码。
反斜杠后有一个空格“ \ ”在
FullnameSave=savepath & "\ " & NameOfFile & ".xlsm"
让我感到困惑的是,如果文件名不包含空格,则会自动忽略/更正这个拼写错误,但如果有空格,则会引发错误。
因此解决方案只是从头重写有问题的代码部分并查找拼写错误。
我不确定这种解决方案是否适合 SU,但它可以解决这个特定问题......