如何解决VBA在使用FileSystemObject时不允许文件路径中的空格的限制?
这是我的代码:
from= "C:\Users\MyAccount\Desktop\a.txt"
to= "C:\Users\MyAccount\Desktop\Folder Name With Spaces\b.txt"
Dim fso As New FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile from, to
我已经尝试过添加“在任何空格之前,它不起作用。”实际上会弹出“Bad FileName或Number”错误。
我还尝试用%20替换任何空格,这也不起作用。
为了澄清,我事先并不知道路径,它是由用户输入的。
答案 0 :(得分:1)
在VBA或使用FSO时,文件名或路径中有空格没有限制。你必须有其他一些问题。
例如,我不认为FSO会创建目标文件夹(如果它尚不存在)。
另外:如果你昏暗,则不需要使用Createobject ... As New ...:你的对象是在Dim语句中创建的。
答案 1 :(得分:1)
我对同一问题的解决方案:
Dim folderPath As String
folderPath = "D:\MyData\BackUp\capdat\City Name"
If Len(Dir$((folderPath & "\OLDData" & Format(Date, "-ddmmyyyy") & ".accdb"))) > 0 Then
Kill (folderPath & "\OLDData" & Format(Date, "-ddmmyyyy") & ".accdb"
Else
Do something
End if
答案 2 :(得分:0)
因为我做了任何VBA,但是我认为你需要用引号括起你的字符串来否定路径中的空格,这样做有用:
fso.CopyFile """" + from + """", """" + to+ """"
编辑:
This site提出了这个例程:
私有函数GetQuotedArgument(ByVal参数为String)As String Const Quote As String =“”“” 返回String.Format(“{0} {1} {0}”,引用,参数) 结束功能
,并提供:
fso.CopyFile GetQuotedArgument(from), GetQuotedArgument(to)
如果不这样做,你将不得不求助于简短形式的文件名...微软关于这样做的文章here,不确定它是否适用于VBA