MS Access VBA FileSystemObject不接受其中包含空格的路径

时间:2011-10-19 18:36:20

标签: ms-access vba

如何解决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替换任何空格,这也不起作用。

为了澄清,我事先并不知道路径,它是由用户输入的。

3 个答案:

答案 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